The Export Dialog
One screen handles every export Novaboard can write. This page walks the dialog row by row, then lists the options each format adds on top.
Getting There
- File → Export… opens the dialog. It has no default shortcut: run it from the command palette, or bind one under Edit → Keyboard Shortcuts
- File → Repeat Last Export ( Ctrl+Alt+E ) re-runs the file's saved exports without opening anything. It stays greyed out until you have exported once
- File → Export Timelapse… opens the same dialog on the Timelapse card. Also unbound by default, also in the command palette
- File → Save As… ( Ctrl+Shift+S ) opens the same dialog on the Project card with .nova already selected, so Save As is just picking where a project file goes
How It Is Laid Out
A live preview on the left, a stack of collapsible rows on the right. The first row, What, is a grid of nine cards: Project, Image, Animation, Timelapse, Model, Sprite stack, Palette, Crafts and Engine. Picking a card opens the rows that apply to it (Format, Output, Area, Frames, Layers, Files, Effects, and whichever of Animation, Spritesheet, History, Model, Views, Pattern and Engine it needs) and hides the rest.
- Several exports at once — Add export builds a list; each entry keeps its own card, format, options and filename. The list appears as soon as there are two
- Split — Fan one export out into one file per tag, per layer, or per slice
- Per-export layer effects — Every export carries its own layer-effect stack, applied only at export time. Ship a Bit Crusher GIF without touching the source file
- Live preview — The stage plays animations, zooms, and compares before and after for lossy formats
- Filename first — The footer shows the exact name and extension you will get, and warns when two exports would collide
- Saved per file — Exports are stored with the file and restored next time you open the dialog. Repeat Last Export re-runs them all
- Destination up front — The dialog asks where to save before it encodes anything, so a long GIF never runs out the browser's save prompt
- Copy to clipboard — For a PNG, JPEG or WebP export that produces a single image, a Copy button sits next to Download and puts the picture straight on the system clipboard instead of saving a file
- Cancel mid-export — A Cancel button stays live while an export is encoding, and actually stops it rather than just hiding the progress bar
The Rows
Output
The Output row shapes the file every export writes:
- Scale - Integer multiplier from 1x to 16x
- Canvas - Native size, or a preset (Instagram square and story, X post, link preview, itch.io cover, Steam capsule) or a custom width and height. With a preset, Auto picks the largest integer scale that fits
- Margin - Border around the art, in output pixels, added after scaling
- Fit / Fill - Fit the art inside the canvas, or cover it and crop the edges
- Background - Transparent, white, black or a custom color (single images only; animations set their background in the Animation row)
Area
The Area row picks which part of the canvas is exported:
- Canvas - The whole thing, at its full size
- Selection - The active marquee's bounding box, with its size and origin shown
- Slice - One named slice, chosen from a dropdown. With two or more slices on the file, a button splits the export into one file per slice
- Preview crop - Only offered once the area is a selection or a slice. On, the preview shows just what will be exported. Off, the preview keeps the whole canvas and draws the export area as a rect on top of it, which is the better way to check that the crop sits where you think it does
Frames
For an export that can hold more than one frame, the Frames row decides which ones go in. It reports the resulting frame count underneath.
- Current Frame - Just the frame you are on
- All frames - The whole timeline; the label carries the count
- Frame Range - A From and To pair. These two boxes count from 1, matching the timeline
- Specific Frames - A comma-separated list. This one is 0-based, so the first
frame is
0, as the hint under the field says - By Tag - Pick any number of animation tags from a dropdown. Only shown on files that have tags
With two or more tags picked, a Split into one export per tag button appears. It turns the single export into one export per tag, each with its own filename, instead of one file holding every tag's frames.
Layers
Which layers get composited into the export:
- Visible - Whatever is visible right now. The default
- All - Everything, hidden layers included
- Choose - Hand-pick them. The layer list below has an eye on every row; clicking one drops or restores that layer. Clicking an eye while on Visible or All switches you to Choose with the current set carried over, so "visible minus one" is a single click
With two or more layers included, a Split into one export per layer button fans the export out, one file per layer.
Files
Where the Layers row picks what goes in, the Files row decides whether it all lands in one file. It shows on the Image and Sprite stack cards.
- Export layers separately - Off by default. On, you get one file per layer instead of one composited image
- Include hidden layers - Adds the hidden ones to the per-layer output
- Output - Individual Files, or a ZIP Bundle holding them all. Bundling to a ZIP shows an editable archive name field
A readout under the options lists the filenames you are about to get, up to a handful, then "+n more". Layer names are sanitized into the filename, so odd characters become underscores.
Per-Format Options
Project (.nova)
- Include edit history - On by default. Writes the file's history into the export so it can be scrubbed after reopening. Turn it off for a smaller hand-off copy
- Include replay anchors - Nested under the history option and on by default. Anchors make history scrubbing fast on reopen. Turning them off makes a smaller file; they get rebuilt as needed
- Bundle referenced files - Only offered when the file actually has clip references. It pulls the referenced files into the export so it opens anywhere on its own
MP4
- Background — Solid color or checkerboard (H.264 has no alpha, so transparent pixels are flattened onto the chosen background)
- Quality — 1 to 100, higher is better; it sets the encoder's bitrate
- Export area — Set in the Area row: whole canvas, active selection, or a slice
- Streaming-friendly — The MP4 moov atom is written at the start of the file so playback begins before the full download completes
MP4 export uses the browser's native H.264 encoder (WebCodecs). Browsers without H.264 encoding support show an error pointing you at WebM export instead. Frame timestamps match your project's framerate exactly.
WebM
- VP9 with VP8 fallback — Uses VP9 when the browser supports it; otherwise falls back to VP8
- Background — Solid color or checkerboard; transparent pixels are flattened onto the chosen background (alpha is not preserved)
- Quality — 1 to 100, higher is better; it sets the encoder's bitrate
- Export area — Set in the Area row: whole canvas, active selection, or a slice
- Frame-accurate timing — Explicit per-frame timestamps match your project's FPS exactly. The MediaRecorder fallback below records in real time, so its timing can drift
WebM export uses the browser's native VP9/VP8 encoder (WebCodecs) where available, and falls back to MediaRecorder for browsers that lack WebCodecs support.
GIF
Frame rate, direction (forward, reverse, ping-pong) and background live in the Animation row and apply to every animated export. The rest are GIF's own:
- Quality - 1-30 setting, higher is better (controls how many colors the encoder keeps)
- Palette - One palette per frame, or one shared palette for the whole file
- Dither - Off, Floyd-Steinberg, Atkinson or ordered
- Repeat - Loop count (0 = loop forever, or a specific number of plays)
- Normalize Timing - When on, re-times frames against a base FPS for consistent playback
- Base FPS - Used only when normalize timing is enabled; otherwise every frame gets the same duration, taken from the file's FPS
APNG
- Full transparency - Unlike GIF, APNG supports full 8-bit alpha
- Repeat - Loop count, same as GIF
- Timing - Per-frame delays, derived from the Animation row's frame rate
Sprite Sheet
- Layout - Horizontal strip (single row), vertical strip (single column), or a grid
- Columns - Grid layout only, 1 to 32; the rows follow from the frame count
- Padding - Spacing between cells, 0 to 64 px
- Split by Tag - Emit one sheet with a row or column per animation tag (requires tag-kind frame selection)
- Split by Tag Orientation - When splitting by tag, lay each tag out as a row or as a column
- Include JSON - Emit a sidecar metadata JSON with frame rects and tag info
- Rows - Only on a Model or Sprite stack sheet with more than one view. Layout above pours views and frames into the layout in order; Row per view instead gives each direction its own row and runs the timeline along the columns, which is the shape most engines expect from a directional walk sheet
The output image format is chosen in the Format row: pick PNG, JPEG, WebP or BMP Sprite Sheet under the Animation card.
SVG
Each pixel becomes a <rect> element, grouped by color to keep the file small. The result scales to any size without blur, which suits web graphics, icons and print.
Netpbm
Export to portable bitmap formats (PBM, PGM, PPM, PAM):
- Format choice - PBM (1-bit), PGM (grayscale), PPM (color), PAM (with alpha)
- ASCII or Binary - Human-readable or compact encoding
- Bit depth - 8-bit or 16-bit output, on everything except PBM
- Luminance Threshold - PBM only, 0 to 255, 128 by default. It is the brightness cut that decides which pixels come out black and which come out white. Raise it to keep more detail in the highlights, lower it to keep more in the shadows
- Dithering - PBM only: None, Floyd-Steinberg or Ordered
GraphicsGale
- Color Depth - 24bpp RGB or 8bpp Indexed. Pick 8bpp when the receiving
project expects an indexed
.gal; 24bpp keeps every color the file has
Palette
The Palette card exports the file's palette rather than its pixels.
- Only colours used on the canvas - Skips palette entries the art never actually paints with. The Format row also reports how many colours the palette holds, transparent slot aside
- Swatch size - PNG Strip only, 1 to 64 px per swatch
- Columns - PNG Strip only, 0 to 64. 0 puts every swatch on a single row
Timelapse
The Timelapse card replays your edit history. The result is a GIF, a WebM or MP4 video, a sprite sheet, or a new file with one frame per sample. The History row decides what gets sampled:
- Commit range - The slice of history to replay, or all of it
- Sampling - Every commit, every N commits, every N seconds, or a fixed number of frames
- FPS and Hold last frame - Playback rate, and how long to linger on the finished art
- Preview frame - Places the finished drawing as the first frame, so GIF and video previews (which show the first frame) present the final art
The background of a GIF, WebM, MP4 or sprite sheet timelapse is chosen in the Output row, the same place every other export keeps it.
Model and Sprite Stack
Two cards render your layers as a 3D-ish object. Model projects them as
voxels, Sprite stack stacks them the rotsprite way. Both share the Views row, and
Model can write a MagicaVoxel .vox file instead of rendering anything.
- Views - 1, 4, 8, 16, 24, or a custom count up to 72. The row reports the degrees between views
- Start angle - Where the rotation begins, 0 to 359 degrees
- Spin - Clockwise or counter-clockwise
- Timeline while spinning - Play the animation along the rotation, or loop the whole animation once per view (the usual 8-direction walk sheet)
- Use preview camera - Copy angle, pitch, spacing and lighting from the Preview panel
- Package as - A new file, a GIF, a sprite sheet, or a PNG sequence
- Model only - Orthographic or perspective camera, pitch from -89 to 89, a lighting toggle, and a frame size of Fit every view, Board size, or custom pixels
- Sprite stack only - Layer spacing 1 to 20, plus a margin that keeps the frame the same size at every angle
The .vox Option
Switching the Model card's format from Rendered views to .vox file writes a MagicaVoxel model instead of images: one voxel per opaque pixel, one Z slice per layer, and the file's palette as colors. Rendering options fall away, since nothing is being rendered.
- Frames - Current Frame or All Frames
- Voxel readout - Sits above the options and shows the canvas size, how many layers become slices, and the resulting voxel count in thousands. Past roughly 20k voxels it warns that rendering every view will take a while
- Size limit - Files larger than 256x256 cannot be voxelised at all, and the row says so instead of offering the option
Only visible raster layers count as slices. Draft layers, reference layers and adjustment layers are skipped.
Crafts Pattern
The Crafts card turns the art into a cross-stitch chart or a bead pattern, one stitch or bead per pixel. The Pattern row holds its settings. See Import & Export for the color systems themselves and how colors are matched.
- Page Size - PDF only: A4 or Letter
- Cell size (mm) - PDF only, 1 to 20 mm. How big each printed cell comes out
- Cell size (px) - Image output only, 4 to 64 px
- Include color legend - Image output only. Adds the symbol-to-color key beside the chart (the PDF always carries one)
- Threads / Beads / Blocks - Three rows over one choice of color system, so only the row that owns the current system shows a selection. Threads covers DMC, Anchor, Madeira and Cosmo; Beads covers Hama, Perler, PhotoPearls and Artkal (with an A / C / S series picker); Blocks is Artkal's building-block line
- Fabric Count (per inch) - 6 to 32. Used to work out the finished size of a stitched piece. Bead systems ignore it and use their own physical pitch instead
- Tint cells with color - Fill each cell with its thread or bead color behind the symbol
- Show grid lines - Draw the chart grid
- Trim empty border - Crop the transparent margin away before charting
- Padding (cells) - 0 to 20 empty cells around the pattern
Under the fabric count sits a size readout: the pattern in stitches or beads, then the finished piece in inches and centimetres. A Pattern Preview button renders the chart, page by page, before you commit to the export.