Skip to content

User Guide

Flying Pizza edited this page Apr 19, 2026 · 2 revisions

This guide covers everything you need to use GrainLab effectively — from loading your first image to exporting a finished batch.


1. Loading an Image

You can import images in several ways:

  • Drag and drop — drag one or more image files anywhere onto the canvas area.
  • Keyboard shortcut — press Ctrl + O (macOS: ⌘ + O) to open the system file picker.
  • Film strip + button — click the plus icon at the bottom of the screen to add more images to the gallery.

Supported formats: JPG · PNG · GIF · WebP · BMP · TIFF

If your gallery is empty when the app loads, a built-in example image is loaded automatically so you can start experimenting right away.


2. Applying a Film Preset

Open the Presets tab in the left panel. Eleven carefully crafted film simulations are available:

Preset Character
Kodak Portra 400 Classic portrait film — warm tones, soft highlights, flattering skin
Kodak Gold 200 Rich, warm, highly saturated — great for travel
Kodak Ektar 100 Ultra-vivid colors, ultra-fine grain
Kodak Tri-X 400 High-contrast black & white, coarse grain
Fuji Superia 400 Fresh greens, balanced color, excellent skin tones
Fuji C200 Cool and subdued, low contrast — Japanese film aesthetic
Fuji Velvia 50 Extreme saturation, deep blues and greens
Fuji Eterna 500 Cinematic, low saturation, soft shadow detail
Ilford HP5 Plus Classic black & white with strong grain texture
CineStill 800T Cool tungsten cast, distinctive red halation glow
Agfa Vista 200 Warm vintage feel, magenta shadows

Hover over a preset card to read its description. Click to apply it instantly to the current image.


3. Adjusting Effects

Switch to the Adjustments tab to fine-tune each of the 8 independent effect layers.

Use the Simple / Advanced toggle at the top of the panel:

  • Simple mode — shows primary sliders for each effect.
  • Advanced mode — additionally reveals per-channel Color Toning Wheels (shadows, midtones, highlights) for fine-grained color control.

Effect Reference

Color Grading

Controls the overall tonality of the image.

Parameter Range Description
Exposure −100 → +100 Overall brightness
Temperature −100 → +100 Cool (blue) ↔ Warm (yellow)
Tint −100 → +100 Green ↔ Magenta
Saturation −100 → +100 Color intensity
Contrast −100 → +100 Tonal separation
Highlights −100 → +100 Brightest areas
Shadows −100 → +100 Darkest areas

In Advanced mode, three RGB color pickers let you tint shadows, midtones, and highlights independently (each channel −50 → +50).

Film Grain

Parameter Range Description
Intensity 0 → 100 How much grain is visible
Size 1 → 3 Grain particle size
Color Variance 0 → 100 Per-channel color noise (more = color grain)
Shadow Boost 0 → 100 Extra grain in shadow areas
Highlight Reduction 0 → 100 Suppresses grain in bright areas

Vignette

Parameter Range Description
Intensity 0 → 100 How dark/light the edges become
Radius 0.5 → 2.0 Size of the clear center area
Feather 0 → 100 How gradually the vignette fades
Color 0 → 100 0 = black vignette, 100 = white vignette

Light Leak

Parameter Options Description
Intensity 0 → 100 Strength of the leak
Color Warm / Cool / Vintage Tint of the light leak
Position Top-Left / Top-Right / Bottom-Left / Bottom-Right Corner where the leak originates

Fade

Parameter Range Description
Intensity 0 → 100 Lifts blacks to create a washed, vintage look

Halation

Parameter Options Description
Intensity 0 → 100 Glow strength in bright areas
Color Red / Warm / Gold Hue of the halation glow
Radius 1 → 20 Spread of the glow

Bloom

Parameter Range Description
Intensity 0 → 100 Bloom strength
Threshold 0 → 100 Luminance level above which bloom is applied
Radius 1 → 20 Bloom spread

Tone Curve

A simplified 3-point spline that adjusts luminosity independently in three tonal zones.

Parameter Range Description
Shadows −50 → +50 Lifts or crushes the dark end
Midtones −50 → +50 Brightens or darkens the mid-gray range
Highlights −50 → +50 Opens or clips bright areas

4. Before / After Comparison

Click the compare button in the toolbar (or the icon next to the zoom controls) to enter split-view mode. A draggable divider lets you reveal as much of the original or processed image as you like. Click again to exit.


5. Exporting a Single Image

  1. Click Export in the toolbar, or press Ctrl + S (⌘ + S).
  2. Choose the output format:
    • JPEG — use the quality slider (1–100%). Lower values = smaller file.
    • PNG — lossless, larger file.
  3. Click Download. The file is saved as {original_name}_film.jpg or {original_name}_film.png.

6. Batch Processing

  1. Open the Batch panel from the toolbar.
  2. Select the images from your gallery that you want to process.
  3. Choose a preset and an export format.
  4. Click Export All.

A film_batch.zip file is generated in your browser and downloaded, containing all processed images. Processing uses a Web Worker so the UI remains responsive during export.


7. Gallery & Session Persistence

The Film Strip at the bottom of the screen shows thumbnails of all loaded images (72×52 px, center-cropped).

  • Click any thumbnail to make that image active.
  • Click + to add more images.
  • Click the ✕ on a thumbnail to remove that image from the gallery.

All images and their per-image parameter settings are automatically persisted to your browser's IndexedDB database (grainlab_gallery). They are restored the next time you open the app. Clearing your browser's site data will remove the gallery.

Current filter parameters are also saved to localStorage (grainlab_params) so your adjustments survive a page refresh.


8. Keyboard Shortcuts

Shortcut Action
Ctrl + O Open / import image(s)
Ctrl + S Export current image
Ctrl + + Zoom in
Ctrl + - Zoom out
Ctrl + 0 Reset zoom to fit

On macOS, substitute ⌘ for Ctrl.


9. Language Selection

GrainLab automatically detects your browser's language on first load. You can override it manually using the language selector in the top-right corner. Your choice is persisted to localStorage (lang).

Supported locales: en · zh-CN · zh-TW · ja · ko · fr · de · es · pt

Clone this wiki locally