Add Your JPG Files
Drag and drop images onto the page, or click "Add Images" to browse. You can select up to 50 files at once (100MB maximum per file). Accepts JPG, JPEG, PNG, WebP, and AVIF—anything converts to JPG output.
Your images process right in your browser. We can't see them even if we wanted to.
Drag & drop your files here
Max 50 files • Max file size: 100MB
Accepted formats: .jpg, .jpeg, .png, .webp, .avif
Customize output
Customizing
image.jpg
Loading codec settings...
Original
-- MB
Compressed
-- KB
⏳ Compressing...
Shrink photos by 60-80% without leaving your device
JPG (or JPEG) is the most common format for photos, but camera images can be massive—often 4-8MB straight from your phone. This JPG compressor reduces file size by 60-80% without noticeable quality loss.
Unlike other tools that upload your files to a server, we process everything in your browser using WebAssembly. Your photos never leave your device. You can compress one file or batch process up to 50 images at once.
JPEG is a lossy format—it removes details your eyes barely notice to save space. Our tool uses MozJPEG (Mozilla's improved encoder) which produces files 3-10% smaller than standard JPEG at the same visual quality. You get six compression presets: Maximum Compression for the smallest files, High Quality for photography portfolios, Target Size for hitting exact limits like 100KB, and three others.
For truly lossless compression, you'll want PNG format instead. JPEG can't be losslessly re-compressed because any decode-and-encode cycle loses information. But our High Quality preset (quality 92) looks nearly identical to the original while saving 20-40%.
Fast, free, and entirely in your browser
Drag and drop images onto the page, or click "Add Images" to browse. You can select up to 50 files at once (100MB maximum per file). Accepts JPG, JPEG, PNG, WebP, and AVIF—anything converts to JPG output.
Pick from six presets. Maximum Compression (default) gives you the smallest files. Target Size lets you specify an exact limit like 100KB. Custom Quality gives you a 1-100 slider for manual control.
Compression happens in seconds (we use 4-6 parallel workers for batches). Download files individually or grab everything as a ZIP. Files process simultaneously, so 20 images take about the same time as one.
Each preset uses different quality settings and algorithms
Starts at quality 30 and uses aggressive settings: progressive encoding, 4:2:0 chroma subsampling, and smoothing level 10. Perfect for web thumbnails, social media uploads, or email attachments where file size matters more than pixel-perfect quality.
Starts at quality 80. If reduction falls below 10%, it drops to quality 75, then 70, continuing until you hit at least 10% savings. Maintains excellent visual quality—imperceptible difference from the original for most viewers. Use for photography portfolios or print-ready images.
Important: JPEG can't be truly lossless. Any time you decode and re-encode a JPEG, you lose information. This preset uses quality 100 and strips metadata, but don't expect much size reduction. For actual lossless compression, use PNG or WebP lossless mode.
Want exactly 100KB for a passport photo? Enter 100KB. Our binary search algorithm tries different quality levels (typically 2-3 attempts) until it hits your target within 5% tolerance. Uses BPP (bits per pixel) heuristic to estimate starting quality, then refines with power-law calculations.
Tell it "make this 50% smaller" and it calculates target bytes, then runs the same binary search as Target Size mode. Useful when you want proportional reduction rather than an exact number.
Manual slider control. Quality 1 = maximum compression (tiny file, visible artifacts). Quality 100 = minimal compression (large file, best quality). Most photos look good at quality 75-85.
Hit exact file size limits for forms, applications, and uploads
LinkedIn profile photos, job applications, social media profiles
Visa applications, government forms, official documents
Thumbnails, ID photos, small avatars
Product photos, e-commerce listings, featured images
Select your image, choose Target Size, and enter your limit (supports KB or MB). Our algorithm calculates bits per pixel (BPP) from your target size and image dimensions, estimates starting quality, then compresses. If the result is too large, it tries a lower quality. If too small, it tries higher quality. Most files reach target in 2-3 compression cycles. The entire process takes 2-5 seconds.
Tip: If your target is less than 1% of the original file size, enable Resize in optional settings. This reduces image dimensions iteratively (3 attempts, scaling to 85% each time) until the target is reachable.
Different scenarios need different compression strategies
Problem: Most email providers limit attachments to 25MB total, but large images bloat mailboxes.
Solution: Use Maximum Compression or Target Size (aim for under 2MB per image). A batch of 10 photos at 200KB each = 2MB total attachment.
Problem: Large images slow page load. Google's Core Web Vitals penalize slow sites.
Solution: Hero images: 300-500KB. Thumbnails: under 50KB. Product photos: 200-400KB. Or convert to WebP (25-35% smaller).
Problem: Government sites, job portals, and visa applications enforce strict limits (often 100-200KB).
Solution: Use Target Size mode with the exact limit. Passport photos: 100KB. Job applications: 200KB. Most forms reject uploads over their limit.
DCT, quantization, and MozJPEG explained
JPEG (Joint Photographic Experts Group) is a lossy format from 1992. It throws away information your eyes barely notice. Here's the actual process.
Your browser decodes the image from RGB (red-green-blue) to YCbCr (luminance + two chroma channels). Human eyes see luminance better than color, so JPEG can compress color more aggressively without you noticing.
Most JPEG encoders use 4:2:0 subsampling—full luminance resolution, but color channels at half resolution. Your eye can't tell. Saves 50% on color data immediately.
Image splits into 8×8 pixel blocks. DCT converts each block from spatial domain (pixel values) to frequency domain (how much the block changes). Low-frequency data (smooth areas) = small coefficients. High-frequency data (sharp edges) = large coefficients.
This is where compression happens. A quantization table divides DCT coefficients by values (higher quality = smaller divisors, lower quality = bigger divisors). Small coefficients become zero. Large coefficients stay recognizable. Your quality setting (1-100) controls this table.
Remaining data gets compressed with Huffman coding (lossless step). Common values get short codes. Rare values get long codes. All those zeros from quantization compress extremely well.
Standard libjpeg from the 1990s works fine. MozJPEG (developed by Mozilla, now used by Google, Meta, and others) improves three things:
Combined result: 3-10% smaller files at the same visual quality. We use @jsquash/jpeg v1.6.0 (MozJPEG via WebAssembly). The entire process runs in your browser—compiled C code executing at near-native speed. A 12-megapixel photo compresses in 1-2 seconds.
Everything you need to know at a glance
100MB per file
50 files at once
100% Browser
Everything you need to know about JPG compression
Add your JPG file (drag-drop or click "Add Images"), choose a compression preset (Maximum Compression is default and gives 60-80% reduction), then click Compress. Download results individually or as a ZIP. The entire process takes seconds.
Yes, JPEG is lossy—compression removes details. Maximum Compression is aggressive and you'll notice quality loss on close inspection. High Quality preset (quality 92) is imperceptible for most viewers. The more you compress, the more quality you lose, but our tool never returns a larger file than your original.
We use MozJPEG (Mozilla's encoder) which produces 3-10% smaller files than standard JPEG at the same visual quality. Unlike other tools, we process entirely in your browser—files never upload to a server. You get six compression presets, batch processing for 50 files, Target Size mode for exact limits, and no daily restrictions.
Use High Quality preset (starts at quality 92). It won't reduce size by much—typically 20-40%—but quality loss is imperceptible. You can't truly compress JPG "without losing quality" because JPEG is lossy. For lossless compression, you need PNG format.
Select Target Size preset, enter 100KB, then compress. Our binary search algorithm tries different quality levels (typically 2-3 attempts) and hits your target within 5% tolerance. If 100KB is unreachable even at lowest quality, enable Resize in optional settings to reduce image dimensions.
Yes, if the tool processes locally. We use browser-based WebAssembly—your files never leave your device. No upload to any server. Other tools upload files (privacy risk, especially for sensitive documents). We can't see your images because they only exist in your browser memory.
Nothing—same format, different file extension. Early Windows systems required three-letter extensions (.jpg), while Mac and Unix used .jpeg. Modern systems accept both. Our tool outputs .jpg files but handles .jpeg inputs identically.
Depends on the source. Uncompressed camera photos (4-8MB) can shrink 60-80% with Maximum Compression preset. Already-optimized images might only compress 10-20%. If an image is already at quality 75 and you try Maximum Compression, you'll see degradation but less size reduction. Our tool keeps your original if compression would make the file larger.
Use Maximum Compression preset or Target Size mode (aim for under 2MB per image). Most email providers limit total attachments to 25MB. If you're sending 10 photos, compress each to 200-300KB. Batch process all images at once, then download as ZIP.
Not truly. JPEG is inherently lossy—any decode-and-encode cycle loses information. High Quality preset (quality 92) is imperceptible to most viewers, but technically you're losing quality. For actual lossless compression, convert to PNG (much larger files) or use WebP lossless mode.
Select up to 50 files when you add images (Ctrl+Click or Cmd+Click to select multiple). We use 4-6 parallel Web Workers, so batches process simultaneously rather than one-by-one. Twenty images take about the same time as one. Download all results as a single ZIP file.
Optional. Enable "Strip Metadata" in settings to remove EXIF data (camera model, settings), GPS coordinates, timestamps, and copyright info. Typically saves 5-20KB. Color profiles are preserved for correct color display. Metadata stripping is useful for privacy (removes location data from photos).
Yes. Add a PNG file, and it converts to JPG during compression. Note: PNG supports transparency, JPG doesn't. Transparent areas become white background. If you need transparency, use PNG compression or convert to WebP.
Compress to an exact KB or MB limit. Choose Target Size preset, enter your requirement (e.g., 100KB for passport photos or 200KB for job applications), and compress. Our algorithm uses binary search—it calculates bits per pixel, estimates starting quality, compresses, checks result, then refines quality until your target is achieved within 5% tolerance.
No. We use WebAssembly for browser-based processing. Your images decode, compress, and encode entirely in your device memory. There's no XHR or fetch call to any compression endpoint. You can open DevTools Network tab and watch—zero file uploads. Works offline after page loads.
Reduce file size by up to 80% in seconds. 100% browser-based—your photos never leave your device.