File formats

Browser and desktop Export downloads use the open document’s filename, replacing its final extension: reaction.qvf exports as reaction.svg. Untitled documents export as sketch with the chosen format’s extension.

Choose an output

What you need

Use

What to expect

Resume editing, including jobs and prepared geometries

QVF or VSK

A native document; QVF requires the optional integration, VSK is readable JSON.

Exchange the canvas drawing

KET

Drawing data, without the separate job specifications and conformer cache.

Exchange molecules

MOL or SDF

MOL combines structures; SDF separates species into records. Neither is a native sketch backup.

Exchange one reaction

RXN

Reactants, products and reagents; a multi-step document cannot be exported as one RXN.

Pass chemical identities to another tool

SMILES or InChI

Text identifiers, without the original layout or computed geometries.

Supply 3D coordinates

The xyz input writer

One species’ first conformer; generate or import a geometry first.

Place a figure in a document

SVG, or PNG where required

An image of the supported rendered content, not an editable sketch document.

Keep a native master alongside exchange files and figures. Reopen an export in its intended consumer and check identities, charges and stereochemistry; format support does not imply that every consumer interprets every feature identically.

Supported formats

Format

Import

Export

Notes

QVF (.qvf)

yes

yes

The vibe family’s file format and vibe-sketcher’s default: the whole document, a preview, and for any QVF reader each species’ 3D structure with its identity, the reaction scheme and the calculations (see the document format). A QVF from another program (a vibe-qc result, a structure vibe-viewer saved) opens as species with their 3D structures, charges, multiplicities, compound numbers and names, and its reaction scheme as reactions. A finished QVF job container opens with its drawing, the result geometry as a new conformer and the energy. Needs qvf-writer 0.6 or newer (install.sh --qvf-path).

.vsk

yes

yes

The same document as plain JSON, for scripts and version control; see the document format.

KET

yes

yes

Ketcher’s JSON; the canvas inside a .vsk.

MOL (V2000/V3000)

yes

yes

All species in one file, with their drawn coordinates. V3000 is used beyond 999 atoms or bonds. Contracted abbreviations are superatom (SUP) S-groups both ways, as in SDF and RXN. Polymer brackets are written beside the species as SRU, COP (its kind in SST) and GEN S-groups and read back onto the canvas; a linear or isolated multiple group (MUL) writes every copy, the parent atom subset and multiplier. Import contracts it only after verifying that expansion reproduces the complete file graph; unfamiliar records retain the listed atoms with a note. A multiple-group record missing its parent atom subset is not interpreted as a contracted repeat: its bracket is omitted with a warning, without inventing copies. Nested groups expand from the inside out, preserving tetrahedral and double-bond stereochemistry; crossing groups without a strict nesting order are refused. A stereogenic bond that is itself cut by the bracket needs explicit new-linkage geometry; internal E/Z bonds and tetrahedral centers are retained. Expansion is bounded at 10,000 atoms. R-group cores make the file a V3000 R-group file: the cores’ R# atoms with RGROUPS, then one RGROUP block per definition, its members with ATTCHPT and its RLOGIC (if-then, rest-H, occurrence); such files are read back into the same cores and definitions.

SDF

yes

yes

One record per species, with id, number, name, charge and multiplicity as fields, then one per bracketed group with its id and number, its brackets as in MOL. A document with R-group cores is refused: SDF records cannot hold their definitions, so export MOL.

RXN

yes

yes

One reaction; reagents are kept apart from reactants.

CDXML

yes

yes

ChemDraw’s XML format: open drawings from other programs and write an editable copy for them; see CDXML for ChemDraw.

CDX

yes

no

ChemDraw’s binary format, read through the same reader as CDXML.

SMILES

yes

yes

One per line; a reaction as reactants>reagents>products.

InChI

yes

yes

One per line.

XYZ

yes

per species

Each frame a structure, its coordinates kept as the species’ 3D structure; charge= and multiplicity= on the comment line are read, as vibe-sketcher writes them. Frames of one molecule, a trajectory, draw it once, with every frame kept as a conformer, the last first. vibe-viewer exports XYZ. Written per species by the xyz input writer.

ORCA output (.out)

yes

no

An ORCA 6 output opens as its molecule; see calculation outputs. Results of a run vibe-sketcher wrote are imported into that run instead (results).

ORCA Hessian (.hess)

yes

no

The geometry in its $atoms block, read as neutral: the file states no charge or multiplicity.

Peptide, DNA, RNA sequence

yes

FASTA

One-letter codes, one sequence per line or as FASTA records, in either case; spaces and position numbers are ignored. Peptides use the 20 standard L amino acids with free termini; DNA (ACGT) and RNA (ACGU) have free 5’- and 3’-OH. Each becomes its full structure, an ordinary species; see peptides and nucleic acids.

HELM

yes

yes

One HELM string per line: peptides, including D-amino acids, acetyl and amide caps, N-methyl and phospho residues and links such as disulfides, and RNA or DNA, as far as RDKit’s HELM monomer library and vibe-sketcher’s modifications go.

Name

yes

no

Through vibe-qc’s naming engine, then, for names it does not know, OPSIN (the optional [opsin] extra and a Java runtime): systematic IUPAC, CAS-style and many trivial names. The note says which read it; OPSIN’s reason is given when neither can. Nothing is looked up online.

SVG

no

yes

The drawing as laid out, with structures in ACS 1996, RSC or Wiley JCC style, reaction and electron-flow arrows, plus signs and text.

PNG

no

yes

Whole drawing through the optional publication backend, with DPI control. Base installs retain legacy single-structure ACS PNG.

PDF

no

yes

Vector drawing with embedded text fonts; requires the publication extra.

EMF

no

yes

The figure as a Windows Enhanced Metafile for Word, PowerPoint and Excel, text outlined; see figures for office programs.

EPS

no

yes

The figure as Encapsulated PostScript, text outlined.

chemfig (.tex)

no

yes

LaTeX source for the chemfig package: one \chemfig per structure with the drawn angles and bond lengths, each reaction as a \schemestart scheme with reagents, conditions, yield and compound numbers. A fragment to \input; see chemfig for LaTeX.

Publication SVG. Export preserves each drawn molecule occurrence and its coordinates, including repeated species in a mechanism. Reaction arrows keep their direction and kind; curved electron-flow arrows keep their signed height and full or single-electron head. Plus signs, free text and drawn compound numbers retain their positions, and so do rectangles, ellipses and lines, in the preset’s line width (see shapes and TLC plates). The figure is cropped to the drawing with a 6 pt margin; text bounds allow for font substitution. Text uses the publication font at the preset size and retains line breaks, rather than canvas rich-text styling. One KET bond-length unit is the preset bond length (14.4 pt for ACS 1996). Export refuses unsupported chemistry, unknown arrow kinds and unsupported canvas objects instead of dropping them. A document without a drawing uses the existing reaction-row layout from its species and reaction metadata. Browser, SDK, CLI, REST and MCP SVG exports share this renderer. The publication backend converts that same SVG to scheme PNG or vector PDF.

Journal presets. style.preset in a saved document selects acs-1996 (the default), rsc or wiley. Browser exports use that saved choice. vibe-sketcher render scheme.qvf -o scheme.svg --style rsc overrides it for one export. The SDK accepts render(document, "svg", style="rsc") or export(document, "svg", style="rsc"); REST export endpoints accept ?style=rsc, and the MCP export tool accepts style. Overrides do not change the document. Unknown presets list the available choices.

Setting (pt unless stated)

ACS 1996

RSC

Wiley JCC

Bond length

14.4

12.2

17

Line width

0.6

0.5

0.75

Text size

10

7

12

Double-bond spacing

18%

20%

18%

Stereo wedge width

RDKit ACS

1.6

2.6

Hash spacing

RDKit ACS

1.8

2.6

Atom-label margin

RDKit ACS

2 (our default)

2

The RSC values come from the Green Chemistry author guidelines. The Wiley values come from the Journal of Computational Chemistry graphics FAQ. Wiley journals differ: wiley is the JCC baseline, not a claim of compliance with every Wiley journal or with EurJOC. Both sources specify Arial (RSC also accepts Helvetica). Annotations and atom labels use the reviewed Roboto Regular sans-serif font; SVG embeds the annotation font, PNG uses it explicitly, and PDF embeds its used glyphs. This font substitution is intentional and must be checked against the target journal’s requirements. No proprietary font is redistributed.

Presets scale the entire existing scene uniformly; they do not straighten bonds, alter angles, relayout annotations or change stereochemistry. The 6 pt outer crop margin is separate from the atom-label margin. Solid wedges use the specified full width; hash strokes use the specified physical spacing, centred within the visible bond. Metadata-only reaction rows use the same preset. The optional publication backend applies these presets to PNG and PDF too.

Keep original QVF results. Import takes the structures and supported sketch content; it does not retain wavefunctions, frequencies, trajectories or other calculation payloads. Use Save As to a different QVF or VSK file for the edited sketch. Saving or exporting over the original result is refused, including when Save As selects that same file. QVF files from other programs, unknown payloads, extra metadata and unreadable archives are protected too. Only native sketch archives whose data can be reproduced from their stored document can be replaced. Preview images are regenerated when saving.

Structures from other programs. A QVF structure or an XYZ frame is atoms and coordinates; vibe-sketcher perceives the bonds. A SMILES the file states gives the bond orders and charges, and the coordinates are kept. Without one, the bond orders are perceived with the stated charge. A neutral radical or a metal hydride, whose bond orders nothing fixes, is drawn with single bonds and a warning to check it. A structure that holds several molecules, such as a dimer, gives each its own 3D structure. A periodic structure is refused: vibe-sketcher draws molecules.

Calculation outputs. An ORCA 6 output is atoms and coordinates too. Its stated total charge and multiplicity fix the bond orders, which are inferred from the coordinates. A structure whose bond orders do not fit its coordinates and charge is left out with a warning rather than drawn with guessed bonds, and the document’s history records that the graph was inferred. Each geometry an optimisation printed is kept as a conformer of its species, the last first; a run that did not converge or did not terminate normally opens with a warning. An output that names no ORCA 6 version, or states no charge or multiplicity, is refused.

Small coordinates in scientific notation, including near-zero residuals from geometry optimisation, retain their full precision when imported from QVF or XYZ.

Opening a QVF or a .vsk takes the whole document: species, compound numbers, names, 3D structures and jobs, with species and reactions read again from the drawing so they match it. Importing one into a document adds its drawing beside what is there.

Large KET drawings and imported structures use V3000 internally when a canvas molecule has more than 999 atoms or bonds. Charges, radicals, isotopes and drawn stereochemistry are retained. Unsupported chemistry still produces a warning with the reason.

Exports refuse what a format cannot hold and say why: an RXN file of a document without a reaction, an RXN file of a document with several, or a PDF without the publication backend. Imports refuse input they cannot read.

Newly generated 2D layouts separate disconnected components, including isolated ions, with room for atom, hydrogen and charge labels. Each component moves as a unit, preserving its internal geometry and stereochemistry. Existing authored 2D coordinates and whole-drawing imports retain their placement.

SMILES and reaction SMILES imports preserve specified E/Z stereochemistry when laying out the drawing. Unspecified alkenes use a crossed double bond so their displayed coordinates do not imply an assigned isomer. For example, C/C=C\C remains Z-butene, while CC=CC keeps its unspecified geometry.

MOL, SDF and RXN exports mark assigned absolute tetrahedral centers with the molfile chiral flag. Readers that honor this flag therefore retain the chosen enantiomer instead of interpreting its wedges as relative stereochemistry. Unassigned centers remain unassigned. Each SDF record and each reactant, reagent and product in an RXN file carries its own flag.

Imports honor that distinction too. A molfile with assigned tetrahedral centers and chiral flag 0 declares relative stereochemistry; enhanced OR and AND groups describe an unknown member or a mixture. These inputs are refused because a calculation species must identify one stereoisomer. Use an explicit absolute stereoisomer, declared by chiral flag 1 or an absolute V3000 group. SMILES extensions are checked before normalization, so a relative group cannot disappear into an ignored title. The legacy CXSMILES r relative-configuration flag is refused too, including whitespace-padded forms such as |r | accepted by the underlying reader.

Native KET, .vsk and sketch QVF drawings retain relative stereo labels with an unsupported-structure warning. They can be saved for inspection; structure, identifier and publication exports refuse the drawing until the relative structures are resolved, rather than silently leaving them out. Unspecified centers without a relative-group declaration remain supported and are reported when a 3D calculation needs to choose a configuration.

PNG and PDF publication figures

With the publication extra, export the same complete drawing in all three formats:

vibe-sketcher render scheme.qvf -o scheme.svg --style rsc
vibe-sketcher render scheme.qvf -o scheme.png --style rsc --dpi 600
vibe-sketcher render scheme.qvf -o scheme.pdf --style rsc

PNG defaults to 300 DPI, with a white background and embedded physical resolution metadata. --dpi accepts integers from 36 to 2400; exports over 40 million pixels are refused before allocating the raster. PDF preserves the SVG’s physical dimensions in points and uses vector shapes with embedded annotation fonts. No system font or network resource is loaded. Unsupported annotation glyphs are refused with their Unicode code points rather than replaced by empty boxes. The same embedded font also makes SVG portable.

SDK render and document.formats.export accept dpi=600 for PNG. REST export routes accept ?dpi=600; MCP export accepts dpi. Browser exports use the same API at 300 DPI and offer PDF alongside SVG and PNG. When the optional backend is absent, the browser can still rasterize SVG locally; server PDF and scheme PNG return an installation hint. Base installs retain legacy ACS PNG for one structure without annotations.

chemfig for LaTeX

vibe-sketcher convert scheme.qvf -o scheme.tex (SDK export(document, "chemfig"), REST GET /api/documents/{id}/export/chemfig, MCP export with format chemfig) writes a fragment for a document that loads the chemfig package: \input{scheme.tex} draws every reaction as a scheme and every other species as a structure. The walk reproduces the drawing: bond angles and relative lengths come from the 2D coordinates, so fused and bridged rings appear as drawn; carbon is implicit, heteroatoms carry their hydrogens away from their bonds and charges as superscripts, stereo bonds are Cram wedges and hashes, aromatic rings are written in a Kekulé form, and a contracted abbreviation is its label. Reagents sit above the arrow, conditions and the yield below it, and a compound number becomes \chemname. Forward, equilibrium and resonance arrows are chemfig’s; a retrosynthetic arrow uses TikZ’s double -Implies tip, which chemfig loads. Electron-flow arrows and free text of a drawing are not written in a scheme. The fixture set is compiled with lualatex by the test suite where TeX is installed; a bond chemfig cannot draw (dative, query) is refused with the reason.

A drawing with shapes or polymer brackets is written differently, because a box, a ring or a bracket only means something where it is drawn, and a bracketed group is no species a scheme could hold: the fragment is one tikzpicture of the whole drawing, the figure the SVG export prints. Each molecule is a \chemfig walk whose first atom sits at that atom’s drawing coordinates. Rectangles, ellipses, lines, arrows of every kind the SVG figure draws (curved electron-flow arrows included), plus signs and text are TikZ paths and nodes in the same coordinates, so a TLC plate comes through as well. One median bond of the drawing is chemfig’s default atom sep of 3 em. Compound numbers appear only as the text drawn on the canvas, as in the SVG figure. A polyline is a TikZ path through its points, and the brackets of repeat units, copolymers, multiple and generic groups are TikZ paths with their label below the closing one. An R-group atom is its label, such as R1, and each definition is written with its “R1 =” caption and a wavy line across every attachment bond, made of TikZ’s own sin and cos path operations. Objects the drawing cannot express are refused rather than left out.

CDXML for ChemDraw

Open ChemDraw/ChemOffice drawings saved as CDXML using Open…, vibe-sketcher convert scheme.cdxml -o scheme.qvf, SDK import_into, REST document import, or MCP open_document. QVF is vibe-sketcher’s native editable document format: save the imported drawing and subsequent work as QVF. Binary CDX files (.cdx, ChemDraw’s native format) open the same way, as bytes (base64 over REST): vibe-sketcher rewrites the file as CDXML, object for object as the CDX format specification describes, and reads that. The desktop app opens .cdx through its Open dialog but does not register itself for the type.

RDKit reads the structures, expanding nicknames such as Ph and taking stereochemistry from wedges and double-bond geometry. Drawn coordinates, arrows, plus signs, text and compound numbers are retained. Reactions are read from the drawing. Its own scheme is checked against that reading: differences and omitted objects, such as frames, shapes and tables, produce warnings. Inspect those warnings before relying on an imported drawing. A file whose scheme lists reactions without drawing arrows is laid out in rows.

Writing CDXML. Export ▸ CDXML in the browser, vibe-sketcher convert scheme.qvf -o scheme.cdxml, SDK export(document, "cdxml"), REST GET /api/documents/{id}/export/cdxml and the MCP export tool write the drawing for other programs. Copy as CDXML puts the same text on the clipboard. Each molecule is a fragment at its drawn coordinates, with element labels, charges, isotopes, radicals, bond orders, wedges and wavy bonds; arrows keep their kind, including equilibrium, retrosynthetic and curved electron-flow arrows; plus signs, text, compound numbers, rectangles, ellipses and lines are kept. A scheme names each reaction’s reactants, products, arrow and the reagents and text above and below it. Bond length, line widths and the label font size are the style preset’s. Highlights and stereo labels are not written. Objects CDXML cannot hold are refused with the reason.

The writer is checked by round trips: every tutorial scheme written as CDXML and read back keeps each species (by InChIKey), each reaction and each arrow. Revvity’s ChemDraw file library, which RDKit bundles, reads every species of each written file. vibe-sketcher is not tested against ChemDraw itself. QVF remains the native format: CDXML is for exchange, so keep your own copy as QVF.

Automated CDXML import and QVF preservation checks remain required. Actual ChemDraw testing is omitted because ChemDraw is unavailable; compatibility with ChemDraw itself is unverified, and no ChemDraw acceptance files are required for 0.4.

Peptides and nucleic acids

A peptide, DNA or RNA becomes its full skeletal structure, an ordinary species with its SMILES, InChIKey, report, 3D structure and calculations. In the browser, choose Import → Peptide sequence…, DNA sequence…, RNA sequence… or HELM…. Elsewhere, name the format:

vibe-sketcher convert YGGFL --from peptide -o enkephalin.vsk
vibe-sketcher convert 'PEPTIDE1{C.Y.I.Q.N.C.P.L.G}$PEPTIDE1,PEPTIDE1,1:R3-6:R3$$$' --from helm -o ring.vsk

The SDK’s import_into(document, "ACGT", "dna"), the REST import endpoints with "format": "rna" and the MCP new_document and add_structures tools take the same formats. A sequence is read in one-letter codes; any other letter is refused with its position. Modifications, D-amino acids and links such as disulfides need HELM, which RDKit reads as far as its monomer library goes. RDKit’s library has the acetyl and amide caps (ac, am) but not N-methyl or phosphorylated residues, so vibe-sketcher adds a short, reviewed table of them, by the symbols of the Pistoia Alliance’s HELM core library so HELM from other programs reads here:

HELM

Residue

Printed

meA, meF, meH, meL, meW

N-methyl alanine, phenylalanine, histidine, leucine, tryptophan

MeAla, MePhe, MeHis, MeLeu, MeTrp

meG

sarcosine (N-methylglycine)

Sar

Ser_PO3H2, Thr_PO3H2, Tyr_PO3H2

phosphoserine, phosphothreonine, phosphotyrosine

Ser(PO3H2), Thr(PO3H2), Tyr(PO3H2)

Each is made on the standard residue and checked against a structure written out by hand; oxytocin, PEPTIDE1{C.Y.I.Q.N.C.P.L.G.[am]}$PEPTIDE1,PEPTIDE1,1:R3-6:R3$$$, reads as itself. The table grows on request. A monomer neither RDKit nor the table knows, such as hydroxyproline for now, is refused. So is one RDKit’s library lists but cannot build, such as [Nal] (the HELM core library’s naphthylalanines are 1Nal and 2Nal): RDKit would leave it out of the structure, and the import names it and its position instead. The structures are built by RDKit (MolFromSequence, MolFromHELM) and laid out like any imported structure, up to 2,500 atoms each and 5,000 in one import (see security).

A species imported this way keeps its sequence: the HELM and the InChIKey of the structure it builds (see the document format). It is saved in .vsk and QVF, and kept for as long as the drawing is that structure; edit the drawing into another structure and the record is gone. That record is what the sequence exports and figures use:

  • HELM (.helm) writes every species as its HELM, one per line.

  • FASTA (.fasta) writes every species as a record headed by its compound number or id. FASTA holds one chain of standard residues only, and does not say whether ACGT is a peptide or DNA; anything else is refused, so export it as HELM.

  • Figures print such a species as its sequence; see sequences in a figure.

Both exports refuse a document with a species that has no sequence, such as a reagent drawn by hand, rather than leave it out.

When a sequence species is sent to vibe-viewer, its x_vibesketch.origin section also carries helm and helm_inchikey. These are optional hints for a compatible 3D builder; the full atom graph and the checked return mapping remain authoritative. A mismatching sequence must not replace the graph.

Enumerate R-groups

Generate all R-group combinations in the browser appends every constraint-valid ordinary species while retaining the original drawing, cores and definitions. The SDK is vibesketch.document.enumeration.enumerate_rgroups(document, core=None); CLI: vibe-sketcher enumerate-rgroups drawing.qvf --core g1 --output enumerated.qvf. Omit --core for every core. REST uses POST /api/documents/{id}/enumerate-rgroups with revision and optional core; MCP exposes enumerate_rgroups.

Occurrence counts, RestH and if-then constraints follow the MDL CTfile specification. Attachment points and bond orders must match the core. Divalent sites and substituents bridging two separate sites enumerate both attachment orientations and every compatible grouping of sites. Resulting chemical identities are deduplicated, including against species already present, so repeating enumeration adds nothing. The core, definitions, existing conformers and jobs remain intact. Products are added in table order, the order the substituents are listed; when the core has a compound number, such as 3, its new products are numbered 3a, 3b, … in that order, the number written under each.

An unfilled RestH-off site allows arbitrary fragments and is therefore unbounded: set an occurrence requiring every site or enable RestH to permit hydrogen. Missing definitions, incompatible attachments and unspecified polymer lengths are refused. More than 32 attachment sites, 10,000 candidate assignments or 1,000 distinct products is refused before changing the drawing; the operation never silently truncates.