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