Slate — Guide

← Back to app

Welcome to Slate

Slate is an image editor that runs entirely in your browser. No install. No upload. Nothing leaves your device.

It's one HTML file (~200 KB). You can use it online, or download it and open index.html directly from your disk — same app, fully offline.

1920 × 1080 px · 100% · photo.jpg
Slate's main interface — left toolbar, canvas, right sidebar for recent and favourite tools.
On this page
  1. Opening images
  2. Selection tools — Crop, Redact, Blur, Pixelate
  3. Annotation — Text, Arrow, Freehand, Shapes
  4. Adjustments and transforms
  5. Saving your work
  6. Folder tools — Slideshow, Batch, Gallery, Lossless rotate
  7. Format support
  8. Privacy, EXIF, and GPS
  9. Keyboard shortcuts

Opening images

There are four ways to open an image:

Workspace folder

After opening an image via drag, paste, or fallback file picker, Slate suggests picking a workspace folder. This is a single folder on your disk where edited images will be saved as sidecar files. Once set, Ctrl+S saves there directly with no dialog.

Pick a save folder to preserve your work across sessions. Choose Folder ×
The workspace folder nudge. Click Choose Folder once — Slate remembers it for the session.

Selection tools — Crop, Redact, Blur, Pixelate

Selection tools all work the same way: draw a rectangle on the canvas, adjust it, then apply. Hold Shift while dragging to lock to a square. Nudge with arrow keys (Shift + arrow for 10 px).

Commit with Enter or the floating Apply button. Cancel with Esc.

✓ Crop Cancel Enter · Esc
Crop in progress. The floating bar below the canvas appears whenever a selection is active.
Tip: after drawing a selection you can fine-tune exact coordinates in the small numeric panel that appears alongside the canvas.

Annotation — Text, Arrow, Freehand, Shapes

Each annotation lives as an editable layer. A floating Layers panel at the top-right of the canvas lists every layer with move-up/down, show/hide and delete controls. Layers flatten into the image automatically on Save or when you apply a transform (crop, rotate, flip, resize, sharpen, adjust). Undo and redo work across both layer changes and destructive transforms — pre-flatten layer state is recovered correctly.

Brush settings + recent colours

Whenever a drawing tool (pencil, arrow, shape) is active, the floating bar shows that tool's settings — colour picker, thickness slider, and tool-specific extras. Each colour you use is remembered as a small recent-swatch shown next to every colour picker (drawing tools' bar and the text modal). The list keeps the last 8 colours and persists across reloads; click any swatch to apply that colour instantly.

Eyedropper — pick colour from the canvas

I activates the eyedropper. Click any pixel on the image to capture its colour. The hex value goes to your clipboard and is applied to all four annotation tools' colour settings (pencil, arrow, shape, text). The eyedropper then returns to whichever drawing tool you came from, so the new colour appears in the bar immediately and you can keep working without re-clicking the tool.

Adjustments and transforms

Non-selection operations that affect the whole image:

Adjust Brightness +12 Contrast +30 Saturation −10 Cancel ✓ Apply
Brightness / Contrast / Saturation adjustment dialog.

Undo and redo

History goes back 50 steps. Ctrl+Z to undo, Ctrl+Shift+Z to redo. The history resets when you open a new image.

Saving your work

Slate gives you three ways to save, and a smart default:

Export Format PNG JPEG WebP Save to Download to device Save to workspace folder Strip EXIF metadata 1920 × 1080 px — photo-260424143005.png Cancel ⇩ Save
The export dialog — format, save destination, EXIF toggle, and a live filename preview.

Filenames

Saved files are timestamped with yymmddhhmmss, e.g. photo-260424143005.jpg. This means successive saves always get unique names and you can trace each file back to its vintage.

Session restore

Slate remembers your last open file and edits. If you refresh the page or come back later, it offers to resume where you left off. The original file contents are stored locally in IndexedDB — never uploaded. Layers (text, arrows, pencil, shapes) also survive a reload — the resume dialog brings back both the image and the editable layer stack you had.

Folder tools — Slideshow, Batch, Gallery, Lossless rotate

The four buttons at the bottom of the toolbar (above Help) operate on a folder of images, not a single open file. They light up once you've opened a folder via Ctrl+Shift+O or set a workspace folder.

Slideshow

Plays the current album as a fullscreen slideshow.

Batch operations

Apply one or more transforms to every image in a folder. Tools → Batch.

Contact sheet / Gallery export

Tools → Contact sheet / gallery turns the current album into one of two artifacts:

Lossless JPEG rotate

Tools → Lossless JPEG rotate. For a JPEG file open in Slate, this rotates the file by 90° / 180° / 90° CCW without re-encoding — only the EXIF orientation tag is flipped. The pixel bytes stay untouched, so quality loss is exactly zero. Any modern viewer (browser, photo app, OS thumbnail) honours the orientation tag and renders the image rotated.

Format support

Read: JPG, PNG, WebP, GIF (first frame), AVIF, SVG, BMP — natively. HEIC / HEIF via Safari's built-in decoder when available, falling back to a tiny WASM library lazy-loaded the first time you open one. TIFF, JPEG-XL, PSD via the same lazy-load pattern. TGA and DDS are bundled into the page (the libraries are small enough). RAW files (CR2, NEF, ARW, DNG, RAF, ORF) are read by extracting the embedded full-resolution JPEG preview that every TIFF-based RAW container carries — no full sensor demosaicing, but enough to view, crop, and re-export.

Write: PNG, JPEG, WebP, TIFF. Tools → Lossless JPEG rotate also writes JPEGs that have only their EXIF orientation tag flipped — pixel bytes untouched, zero quality loss.

The first time you open a format that needs a CDN-loaded decoder, you'll see a "Loading X decoder…" toast for a moment. After that, the browser caches it.

Supply-chain note: the tiny libraries (TGA, DDS) are vendored — every byte is hashed in the repo's SECURITY.md. The bigger ones (HEIC, JPEG-XL, PSD, TIFF) are exact-version-pinned on esm.sh, so a malicious upstream patch can't reach you without a code change.

Privacy, EXIF, and GPS

Slate runs entirely in your browser. No network connection is needed after the page loads — the HTML file has no external dependencies.

EXIF metadata

When you open a JPEG, Slate parses its EXIF metadata and shows basic fields (camera, date, ISO) in the image info panel. When exporting, EXIF is stripped by default — the canvas re-encode naturally removes it. Uncheck Strip EXIF in the export dialog to re-embed the original EXIF into JPEG exports.

GPS warning: if a photo contains GPS coordinates, Slate shows a warning in the image info panel. This is a reminder — the EXIF data is still in the original file. When you export, the default (Strip EXIF) removes it.
Image Info Dimensions 4032 × 3024 px Format JPEG File size 2.8 MB Camera Apple iPhone 15 Date 2026:04:24 14:30:05 ISO 100 This image contains GPS location data.
Image info panel showing EXIF fields and a GPS-data warning.

Keyboard shortcuts

A condensed reference. Full list available in the in-app help (?).

Open fileCtrl+O
Open folderCtrl+Shift+O
PasteCtrl+V
Smart saveCtrl+S
Export dialogCtrl+Shift+S
Undo / RedoCtrl+Z · Ctrl+Shift+Z
Fit to windowCtrl+0 or double-click
Crop / Redact / Blur / PixelateC · R · B · X
Text / Arrow / Freehand / ShapesShift+T · A · P · S
EyedropperI
Prev / next image ·
FullscreenF
Help?