Skip to content

JPEG 2000 to JPEG converter

JP2 → JPG turns the archival format used by libraries, digitisation projects and space agencies into a file any phone, browser or upload form opens.

  • Converted with Image engine · input deleted within 24 h
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Pixels Changed

    Wavelet data is decoded and re-compressed as baseline JPEG at quality 90; NASA's 4096×4096 solar image converted in 1.5 s.

  • File size Changed

    The JPG is usually larger than the JP2, because JPEG 2000 compresses better: the 2717×3701 balloon print grew from 628,654 to 2,332,988 bytes and the solar image from 1,078,612 to 1,744,569.

  • 16-bit images Changed

    JPG holds 8 bits per channel, so 16-bit grayscale is scaled down by its bit depth: a test file with values 291 to 694 came out with greys from 70 to 174. Choose PNG or TIFF to keep every bit.

  • Grayscale Changed

    8-bit grayscale sources such as the solar images are written as three-channel JPEGs that look identical but carry three copies of the same values.

  • Transparency Lost

    A 135×135 gray-plus-alpha logo was flattened onto white; set background for another colour.

  • XML and metadata boxes Lost

    XML boxes are dropped, so the solar image's embedded FITS header with instrument, wavelength and observation time does not reach the JPG.

  • Codestreams and JPX Kept

    Raw .j2k and .j2c codestreams and .jpf/.jpx files open like .jp2: a 2048×1556 two-layer codestream of 3,363,991 bytes converted in 1.4 s.

  • Very large scans Changed

    Decoding dominates: a 7000×9535 (67-megapixel) scan took 35 s and 1.3 GB of memory, and a 92-megapixel one 34 s and 1.8 GB.

Sample conversions

NASA SDO solar image

Input
aia171.jp2, 1,078,612 bytes, 4096×4096 8-bit grayscale, public domain.
Output
1,744,569-byte JPG in 1.5 s. With width 1024 the JPG was 148,425 bytes, but still took 1.8 s because the full image is decoded first.

Scanned 18th-century print (JPX)

Input
balloon.jpf, 628,654 bytes, 2717×3701 RGB, JPEG 2000 Part 2.
Output
2,332,988-byte JPG in 2.9 s; 1,703,552 bytes at quality 80.

16-bit grayscale

Input
16bit.cropped.jp2, 3,932 bytes, 64×64, 16 bits per sample.
Output
A 308-byte JPG that is entirely white. The same file converted to PNG kept its values.

A real JPEG 2000 → JPEG run

We converted our JPEG 2000 sample (42 KB) with Image engine on 2026-10-20. It took 99 ms and produced a 52 KB JPEG file, 1.2× larger than the input. The engine raised 1 warning, listed below.

Input · sample.jp2 · 42 KB

43,179 bytes

Output · sample.jpg · 52 KB

480 × 600 px, baseline

Width
480
Height
600
Encoding
baseline
  • Image metadata stripped from output.

Is your file a scan?

Library and archive JP2 files are often scans of printed pages. JPG keeps them as pictures; to get the text, convert to JPG or PNG and use the screenshot-to-text or scanned-book-to-epub workflow, which reads pages with AI Deep Read.

Options and when to change them

quality
90 by default. For archive page scans that will only be read on screen, 80 cut the balloon print by 27 percent.
width
Use it for previews of large scans; it shrinks the file, not the time, because the whole image is decoded before resizing.
background
Only matters for JPEG 2000 files with an alpha channel, such as logos; the default is white.

Do it yourself

OpenJPEG + ImageMagick

bash
opj_decompress -i scan.jp2 -o scan.png
magick scan.png -quality 90 scan.jpg

opj_decompress cannot write JPEG itself. Add -r 2 to decode at a quarter of the width and height; on our 67-megapixel test that cut decoding from 15 s to 2 s.

ImageMagick

bash
magick scan.jp2 -quality 90 scan.jpg

Needs an ImageMagick build with OpenJPEG; `magick -list format | grep JP2` shows whether yours has it.

JPEG 2000 to JPEG by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Image engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=jp2&to=jpg.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.jp2" -F "from=jp2" -F "to=jpg" \
  -F 'options={"width":0}' \
  --output output.jpg

Options this engine accepts for JPEG 2000 → JPEG

KeyApplies toTypeDefault
widthWriting JPEGnumber0
heightWriting JPEGnumber0
fitWriting JPEGcontain · cover · fillcontain
qualityWriting JPEGnumber90
backgroundWriting JPEGstring#ffffff
stripMetadataWriting JPEGbooleantrue
API reference

When this is the wrong conversion

  • If the image is 16-bit (medical, scientific or satellite data), convert JP2 → PNG or TIFF instead; JPG is 8-bit only.
  • If the JP2 is an archival master, keep it; the JPG is a viewing copy and is usually larger.
  • If you downloaded the page from a digital library, check whether it already offers JPG or PDF downloads before converting.

JPEG 2000 to JPEG questions

Why can't my computer open .jp2 files?

Chrome, Edge and Firefox do not display JPEG 2000, and Windows has no built-in viewer for it. macOS Preview opens it. Converting to JPG gives a file every device shows.

Why is my JPG bigger than the JP2?

JPEG 2000 compresses photographs and scans more efficiently than baseline JPEG, so at a similar visual quality the JPG needs more bytes. Lower quality to 80 if size matters more than fine detail.

What are .j2k, .j2c and .jpx files?

.j2k and .j2c are bare JPEG 2000 codestreams without the .jp2 box wrapper; .jpx and .jpf use the extended Part 2 file format. All of them start with known byte signatures and convert the same way here.

Why did my archive scan take so long?

JPEG 2000 decoding is slow and its time grows with the pixel count: about 1.5 s for 17 megapixels and 35 s for 67 megapixels in our tests. A width setting does not speed this up.