Does Figma compress images? Not in the direction anyone expects. On 2026-07-18 I placed a 4.13 MB iPhone photo into Figma and exported it twice through the standard export panel. The JPG came back at 10.78 MB, 160.8% larger than the original. The PNG came back at 19.60 MB, 374.4% larger. Figma never shrank the photo once, and it stripped the EXIF metadata both times.
Does Figma Compress Images? What My Two Exports Measured
Figma grew my photo on both exports, by margins that surprise anyone who assumes export means optimize. The direction and the size of the change came entirely from the output format I picked, not from any hidden optimizer working behind the canvas.
| My test, 2026-07-18 | Went in | Came out | Change |
|---|---|---|---|
| iPhone photo, exported as JPG | 4.13 MB at 4032x3024 | 10.78 MB at 4032x3024 | 160.8% larger |
| iPhone photo, exported as PNG | 4.13 MB at 4032x3024 | 19.60 MB at 4032x3024 | 374.4% larger |
The reference file and the method
The file is the same reference photo I run through every platform in this series for the hub on which apps compress your images: a real iPhone photo, 4,332,705 bytes, 4032x3024 pixels, JPEG, with its EXIF metadata intact. I placed it into a Figma design file, exported it once as JPG and once as PNG through the standard export panel at its defaults, and measured both downloads on disk.
The scope of the claim
One file, one day, one account, one upload path. These numbers prove what Figma did to that photo on 2026-07-18 and nothing more. A different path in the same product can behave differently. The second reference file in this series, a transparent PNG cutout, was not measured on Figma, so this page makes no claims about what Figma exports do to transparency.
What the numbers actually say
Neither export touched the dimensions: 4032x3024 in, 4032x3024 out, both times. Both exports stripped the EXIF metadata, the hidden block where the camera writes GPS coordinates, the phone model, and the capture time. And both exports produced a much larger file than the phone did. So does Figma compress images? At export it re-encodes, and for this photo, re-encoding meant growth.
Does Figma Compress Photos When You Import Them?
Not below the pixel cap, as far as anything I measured or Figma documents shows. Figma states that images can be up to 4096 pixels in each dimension, and anything larger is scaled down proportionally until the longest side fits, with the caveat that some file metadata may be lost during that resize. Below the cap, your original bytes are kept as the maximum quality source for everything that follows.
My photo is 4032 pixels on its long side, 64 pixels under the ceiling. The import step left it alone, and the exported dimensions matching the source exactly is consistent with that. If your camera shoots wider than 4096 pixels, and most current phone and mirrorless cameras do, the downsample will fire on import and Figma does not document which algorithm it uses.
One more mechanism worth knowing: Figma does not store your image as a loose file. It becomes an image fill on a rectangle, stored by content hash, and Figma keeps two resolution variants of anything over 512x512 so it can load the light one when you are zoomed out. That is a performance system, not a compression system. Importing a photo under the cap costs you nothing. Exporting is where the rewrite happens.
Why Clipboard Paste Looks Worse Than Place Image
Pasting an image from the clipboard compresses and scales it before it lands in your file. Placing the same image keeps the original bytes. Users have been asking Figma for a way to paste screenshots without compression, and the fact that it lives as a feature request tells you the paste behavior is intended, not a bug.
The fix costs one keystroke. Use File, then Place Image, or Shift+Cmd+K on a Mac and Ctrl+Shift+K on Windows. Placing hands Figma the file on disk. Pasting hands it whatever your operating system squeezed onto the clipboard, which for screenshots and copied browser images is often already a degraded copy.
If a screenshot looks soft the moment it hits the canvas, before any export, the paste path is almost always the reason. My test photo went in through Place Image, which is why the import step stayed clean.
Why Did Figma Make My Photo Bigger?
Because every export is a fresh encode of the canvas, and Figma's encoders make different choices than your phone's. There is no passthrough. The export panel renders the frame and writes a brand new file in the format you chose, and both of the formats I tested wrote more bytes than the hardware encoder in an iPhone does.
The JPG case: a phone writes its JPEGs through a hardware encoder tuned hard for storage, because it expects you to keep thousands of photos. Figma re-encoded the same pixels at its default High quality and kept far more per-pixel data than the source encode did. Same dimensions, same visible photo, 2.6 times the bytes.
The PNG case is the bigger trap. PNG is a lossless format built on DEFLATE compression, which preserves every pixel value exactly and is wonderful for graphics, logos, and screenshots. Photographs are the worst case for it. Push a lossy phone JPEG into a lossless container and the file balloons, which is the whole story of why PNG files are so large. Mine hit 19.60 MB.
A bigger file is not a better photo. The quality ceiling is the file you uploaded, and no export can add detail the original never had. The 10.78 MB JPG contains nothing the 4.13 MB original lacked. When the destination needs a small file, let the export finish, then compress the exported photo and pull the quality slider until the size fits. Choosing the number yourself beats hoping an export panel chooses it for you.
| File | Size on disk | Versus original |
|---|---|---|
| Original iPhone photo, JPEG | 4.13 MB | baseline |
| Figma JPG export | 10.78 MB | 160.8% larger |
| Figma PNG export | 19.60 MB | 374.4% larger |
What Figma Changes: Size, Format, Dimensions, and EXIF
In my test, Figma preserved the pixel grid, rewrote every byte, followed my format choice, and dropped the metadata. Here is the full inventory for one photo through two exports.
| What | Original photo | After my Figma exports |
|---|---|---|
| File size | 4.13 MB | 10.78 MB as JPG, 19.60 MB as PNG |
| Dimensions | 4032x3024 | 4032x3024, unchanged |
| Format | JPEG | whatever the export panel is set to |
| EXIF metadata | present | stripped, in both exports |
The EXIF result deserves its own paragraph, because Figma's documentation does not give you this answer. The official docs mention metadata loss only for the over-4096 resize, and say nothing about what a normal export keeps. My measured answer, for one file on one day: both exports stripped EXIF entirely. GPS coordinates, camera model, capture time, all gone. That is a quiet privacy win if you share exported photos, and a real loss if you are a photographer who needs the shooting data, so keep your original.
Most of what gets called figma image compression online is really this pair of behaviors: a full re-encode whose size depends on your format pick, plus a metadata strip that nobody documents.
The Figma Export Settings That Decide Your File Size
The export panel has four levers that matter: format, quality level, resampling, and scale. Every byte of the difference between my two exports came from the first lever alone, so learn what the other three do before you blame the tool.
JPG and PDF quality levels
JPG and PDF exports offer three named quality levels, High, Medium, and Low, with High as the JPG default and Medium as the PDF default. Figma does not publish what percentage or quantization each label maps to, so the only way to know what High costs in bytes is to export and measure, which is exactly how this page got its numbers.
PNG has no quality dial
The image quality setting does not appear for PNG, because PNG is lossless by definition. The size lever for a PNG export is pixel dimensions, not quality. If a PNG export is too heavy, export smaller, pick JPG instead, or compress the file afterward.
Image resampling: Detailed versus Basic
Since early 2025 the advanced export settings include an image resampling choice. Detailed, the current default, is bicubic: it averages surrounding pixels, which flatters photos and gradients. Basic is nearest neighbor: it copies the single closest pixel, which is the correct choice for pixel art and hard-edged icons. If your pixel art comes out fuzzy, this default is why, and switching it back is the fix.
Scale, DPI, and the export math
Export dimensions come from the frame size on the canvas, not from the original image's resolution. A 3200 pixel photo shown in a 1600 pixel frame exports at 1600 pixels at 1x and 3200 at 2x. Figma's base export is 72 DPI, so 4x gets you 288 DPI, not 300. For true 300 DPI print output you need a custom scale near 4.17x, and for the deeper resolution mechanics see the guide on reducing image resolution.
Do Figma Compression Plugins Actually Work?
They compress exports, but every number in their listings is the vendor's own, and no page ranking for this query has independently tested one. Here is the honest state of the three plugins people actually install.
| Plugin | Its claim | The catch |
|---|---|---|
| TinyImage Compressor | exports up to 95% smaller | freemium, the deep features are paid |
| Image Compressor | batch compresses image fills | user comments report some files coming back larger |
| Figma Image Compressor free | up to 80% smaller .fig exports | vendor figure, no independent test |
TinyImage Compressor is the incumbent, with roughly 517,000 users and format conversion to WebP, AVIF, and progressive JPEG built in. That adoption is a real signal, and the creator actively answers support threads. It is still a paid tool making its own marketing claims, and the comment threads across all three plugins surface real complaints: occasional empty exports, and compressed images that came out larger than they went in.
My take as someone who builds compression tooling: a plugin makes sense when you need to shrink dozens of image fills inside the design file itself. If you only need the final export smaller, compressing after export does the same job with nothing installed and no file access granted.
How to Keep Figma From Bloating Your Exports
Five habits cover almost every case, and none of them needs a plugin.
- Place, never paste, when quality matters. File, Place Image keeps the original bytes; the clipboard path pre-compresses them.
- Pre-shrink anything over 4096 pixels before import, so an undocumented downsampler never touches your file. Do it yourself and you pick the algorithm.
- Match the format to the content: JPG for photographs, PNG for flat graphics and screenshots. The decision table lives in PNG vs JPG, and picking wrong is how a 4 MB photo becomes a 19.60 MB download.
- Switch resampling to Basic for pixel art and hard-edged icons, and leave Detailed for photos.
- Compress the download before it goes anywhere. Exports are a starting point, and the difference between lossless and lossy handling is explained in lossy vs lossless compression.
How Figma Compares to Canva, Slack, and Discord
Figma is the only platform in my test series so far that grew the photo in every export I ran. The same 4.13 MB reference photo has now been through design tools, chat apps, and cloud drives, and the pattern is clean: design tools re-encode, storage tools pass through.
| Platform, same 4.13 MB photo | Result | Change |
|---|---|---|
| Figma, JPG export | 10.78 MB | 160.8% larger |
| Figma, PNG export | 19.60 MB | 374.4% larger |
| Canva, JPG export | 2.34 MB | 43.5% smaller |
| Canva, PNG export | 18.21 MB | 340.7% larger |
| Slack | 4.58 MB | 10.9% larger |
| Discord | 497 KB | 0.3% smaller |
| Google Drive | 4.13 MB | byte identical |
The Canva contrast is the interesting one, because both are design tools that re-encode everything. Canva's JPG export cut the photo by 43.5% while Figma's grew it by 160.8%, which means Canva's default encoder is tuned lean and Figma's is tuned rich. Both PNG exports ballooned, because that is physics, not policy. The full Canva breakdown, including what its exports did to a transparent PNG, is in does Canva compress images.
Ask does figma compress images next to its neighbors, and the answer lands in a strange spot: it is the platform in this series most likely to hand you back a bigger file than you gave it.