Sepia Image Filter
Drop an image in, set how strong the sepia tone should be, watch the preview change and download the result — all inside your browser.
- Free
- No account
- Runs in your browser
- Nothing uploaded
Add an image to see the sepia tone here.
Runs entirely in your browser — your input is never uploaded, logged, or stored.Privacy policy
What is Sepia Image Filter?
This tool applies a sepia tone to a PNG, JPG, WebP, GIF, BMP or AVIF image in your browser. A sepia tone is not a filter preset in the vague sense: it is one fixed 3 × 3 colour matrix, in which each output colour channel is a weighted sum of the three input channels. Red becomes 0.393 of the original red plus 0.769 of the green plus 0.189 of the blue; green and blue are mixed the same way with their own weights. Those are the standard coefficients, the same ones a browser uses for `filter: sepia()` and an SVG uses for `feColorMatrix`, so the result here matches what you would get from any other program that applies the standard tone.
The reason a sepia picture looks warm rather than grey is that the matrix never mixes the channels equally. Green contributes more than twice as much as blue to the red channel, which is what pushes warm colours (skin, wood, sunsets) further towards orange and leaves cool colours (sky, water, shadows) muddy. It is a recolouring, and a fairly crude one: it cannot pick out a face, it cannot brighten a highlight, and it cannot tell a colour that was already brown from one that was grey. A photograph that was shot in colour comes back as a warm monochrome, not as a picture that has been carefully toned.
The intensity slider controls how much of the tone is applied. At 100% you get the full matrix; at 0% the picture is left exactly as it was, pixel for pixel; in between, the two are interpolated, which is what a half-strength tone means — halfway between the original colour and the fully toned one. Lower intensities are useful when the full tone is too heavy: a logo, or a flat graphic, can lose all its colour separation at 100% but read perfectly well at 40%. The page says so when the intensity is 0, because a copy of the original is not a sepia picture and you should not have to guess why nothing happened.
The maths runs on the raw RGBA pixels rather than through a browser filter, so the same file and settings give the same pixels in every browser, and the result can be tested exactly. The alpha channel is never written: a transparent PNG stays transparent, and the transparent corners of a logo do not turn into solid brown. The image is decoded by your browser (turning a phone photo upright with its EXIF orientation), drawn onto a canvas at full size, rewritten channel by channel, and offered back as a download.
"Same as input" keeps PNG as PNG, JPG as JPG and WebP as WebP. GIF, BMP and AVIF are saved as PNG, because browsers can read those formats but cannot reliably write them from a canvas, and an animated file keeps only its first frame. You can also pick PNG, JPG or WebP explicitly: PNG is lossless, so the toned pixels are saved exactly, while JPG and WebP are re-encoded at the quality you choose and are therefore no longer a pixel-exact copy. JPG cannot store transparency, so transparent areas are filled with the colour you pick.
One honest limit: a sepia tone here is a fixed colour matrix, not a simulation of a film stock. It cannot reproduce the colour shifts, the grain or the highlight roll-off of a real sepia print. If you want that look, tone it and then add grain in an editor — the two steps are not the same thing.
Limits: up to 50 images at a time, 50 MB each, and about 100 megapixels (16,384 px per side). iPhones and iPads allow a canvas of only about 16.7 megapixels, so a very large photo may fail there with a message saying so. Your images stay on your device: the Network tab in your browser's developer tools shows no request carrying them.
1. The file's size is checked (50 MB) before it is read, and its first bytes confirm it is PNG, JPG, WebP, GIF, BMP or AVIF; the browser then decodes it upright. 2. The image is drawn onto a canvas at full size and its RGBA pixels are read. 3. For every pixel the three output channels are computed from the matrix: R' = 0.393·R + 0.769·G + 0.189·B, G' = 0.349·R + 0.686·G + 0.168·B, B' = 0.272·R + 0.534·G + 0.131·B. The matrix output is not clamped at this point — for a bright pixel the red and green channels legitimately run past 255. 4. Each channel is interpolated towards the matrix output by the intensity: result = original + (intensity ÷ 100) × (matrix output − original). At 0% nothing moves; at 100% the result is the matrix output itself. 5. The three channels are rounded to the nearest byte and clamped to 0–255. The clamp comes last, so a bright pixel does not saturate one channel early and pull the others with it. 6. The alpha byte is never written, so transparency is preserved. 7. The pixels are written back, the canvas is encoded as PNG, JPG or WebP, and the file is named like photo-sepia.jpg or logo-sepia.png.
| Method | What it does | Can it tint only part of the picture? | |
|---|---|---|---|
| Sepia matrix (this tool) | Mixes the three colour channels with one fixed set of weights, in one pass over the whole picture | No — the whole image is toned at once | |
| Greyscale | Collapses the three channels onto one, using the luminance weights | No — and it discards all the colour in the process | |
| Duotone / split-tone in an editor | Maps the tones of the picture onto a gradient you choose, so shadows and highlights can differ | Usually yes, and the gradient can be tuned | |
| A real film stock, simulated | Applies a measured characteristic curve, with grain and highlight roll-off | Usually — and it is a much heavier process than a colour matrix |
Worked examples
- White (255, 255, 255) at intensity 100% becomes (255, 255, 239): the matrix rows sum to 1.351, 1.203 and 0.937, so red and green overflow past 255 and are clamped, while blue lands just under it.
- Pure red (255, 0, 0) at intensity 100% becomes (100, 89, 69).
- Pure blue (0, 0, 255) at intensity 100% becomes (48, 43, 33).
- Mid grey (128, 128, 128) at intensity 100% becomes (173, 154, 120).
- Pure red (255, 0, 0) at intensity 50% becomes (178, 44, 35) — halfway between the original and the full tone.
- Intensity 0% changes nothing: (255, 0, 0) stays (255, 0, 0), and a 2 × 1 image of (10, 20, 30, 255) comes back exactly (10, 20, 30, 255).
- Alpha is never touched: a 2 × 1 image of (255, 0, 0, 128) comes back as (100, 89, 69, 128) at intensity 100% — the alpha byte is the only part left alone.
- A three-pixel row of black, white and red at intensity 100% becomes (0, 0, 0, 255), (255, 255, 239, 255) and (100, 89, 69, 255).
- photo.jpg saved as PNG at intensity 100% → photo-sepia.png, described as "Sepia (intensity 100%)"; being lossless, it carries no warning about re-encoding.
- logo.png kept as PNG ("Same as input") at intensity 60% → logo-sepia.png.
- photo.png saved as JPG with a white background at intensity 100% → photo-sepia.jpg, with transparent areas filled with white and a note that JPG output is re-encoded at the chosen quality.
- photo.png saved as WebP at intensity 100% with quality 80 → photo-sepia.webp, re-encoded at that quality.
- An intensity of 0 adds its own note: the saved copy is the original, not a sepia version.
- An image of 20000 × 12000 px is refused before any pixels change: more than the 100-megapixel, 16,384-px-per-side canvas limit.
How to use Sepia Image Filter
- Click "Choose images", drop files on the box, or paste a screenshot with Ctrl+V (Cmd+V on a Mac) — up to 50 at once.
- Set the intensity: 100% for the full sepia tone, or less for a lighter tint; the preview updates as you type.
- Choose the output under "Save as" — Same as input, PNG (lossless), JPG or WebP — and set the quality for JPG or WebP.
- Click "Apply sepia", then download each result or all of them together as a ZIP.
Common errors
- "Intensity must be a number from 0 to 100 — 100 is the full sepia tone." — the intensity box is empty, has a value outside 0–100, or is not a number. Leave it at 100 unless you want a lighter tint.
- "IMG_0042.HEIC" is actually a HEIC file, not PNG, JPG, WebP, GIF, BMP or AVIF. The extension does not match the contents — use a HEIC tool for this file. — convert HEIC photos to JPG first.
- "The output would be 20000 × 12000 pixels — more than a browser can safely draw (100 megapixels, 16,384 px per side). Choose a smaller size." — resize the image smaller first, or tone a smaller copy.
- "IMG_1234.jpg" is 62.40 MB, over the 50.00 MB limit for this tool. Everything runs in your browser's memory, so very large files can crash the tab. — resize or compress the file first.
- "photo.png" is empty (0 bytes). Choose the file again — it may not have finished downloading. — re-select the file, or re-download it.
- "Your browser could not read the image pixels. Try closing other tabs and retry." — the browser ran out of memory for this image; close other tabs, or try a smaller image.
- "Your browser could not encode an image this large (20000 × 12000). Try a desktop browser, or resize it smaller first." — iPhones and iPads allow a canvas of only about 16.7 megapixels, so a very large photo can fail there.
FAQ
How do I add a sepia tone to a photo?
Drop the photo in, set the intensity (100% for the full sepia tone), and click "Apply sepia". The tone is one fixed colour matrix applied to every pixel, so the whole picture is recoloured at once. It runs in your browser and the file is never uploaded.
What does a sepia filter actually do to the colours?
Each output channel is a weighted sum of the three input channels: red takes 0.393 of the original red, 0.769 of the green and 0.189 of the blue, and green and blue are mixed the same way. Green counts more than twice as much as blue, which is what makes the result warm. It is a recolouring of the whole picture, not a selective tone, and it cannot brighten a highlight or pick out a face.
What intensity should I use?
100% gives the standard sepia tone. Anything from about 40% to 70% is a good choice for a logo or a flat graphic that would lose all its colour separation at full strength. 0% leaves the picture exactly as it was, and the tool says so, because a copy of the original is not a sepia version.
Is a sepia filter the same as a real sepia photograph?
No. A sepia tone is a fixed colour matrix: it recolours the picture in one set way. A real sepia print came from a film stock with its own colour shifts, grain and highlight roll-off, which a matrix cannot reproduce. Tone the image here and add grain in an editor if you want that look — the two steps are different.
Does the sepia filter keep transparency?
Yes. The alpha channel is never written, so a transparent PNG stays transparent and the transparent corners of a logo do not turn into solid brown. If you save as JPG, which cannot store transparency, the transparent areas are filled with the background colour you pick.
Does applying a sepia tone reduce the file size?
Not by itself — the tone changes the pixels, not the compression. PNG output is lossless, so the toned pixels are stored exactly. JPG and WebP output is re-compressed at the quality you choose, and a smooth sepia picture often compresses better than the original, but the file size is decided by the encoder, not by the tone.
Does the sepia filter remove EXIF metadata like GPS location?
Yes. Each image is redrawn on a canvas and re-encoded, so EXIF metadata — camera model, date and any GPS location — and embedded colour profiles are not carried into the saved file. Photos are turned upright before the tone is applied, so they still display the right way round.
Can I apply a sepia tone to several images at once?
Yes, up to 50 in one batch, each up to 50 MB, with the same intensity and output settings. The preview shows the first image; download the results one by one, or all together as a ZIP file.
Related tools
- Grayscale Image ConverterDrop images, choose a grayscale method or a black-and-white threshold, and download the converted copies — processed on your device, never uploaded.
- Invert Image ColorsDrop images, choose whether to keep transparency, and download the inverted copies — processed on your device, never uploaded.
- Pixelate ImageDrop your images, set a block size, and download the mosaic — block averaging runs on your device, so nothing is uploaded.
Prefer AllUtil on Google
One click adds AllUtil to your Google preferences. You'll see our tools highlighted with a Preferred badge in Search and AI answers.