What is a J2C File?

A J2C file contains a raw JPEG 2000 codestream rather than the boxes and metadata structure of a JP2-family container. The same elementary bitstream also circulates under the .j2k and .jpc extensions. It primarily carries compressed image sample data.

How J2C Files work

A .j2c file is one JPEG 2000 codestream with nothing around it; .j2k and .jpc are other names for the same stream, not separate formats. The codestream syntax is defined in Annex A of ITU-T T.800 | ISO/IEC 15444-1. It opens with the SOC marker, immediately followed by the SIZ marker segment, which gives the size of the reference grid and of the tiles, the number of components, and each component’s bit depth and sample spacing. Further marker segments describe coding style, quantization, and progression, and the EOC marker ends the stream. That is enough for a decoder to reconstruct sample values, and because resolution levels, quality layers, tiles, and progression order are coded in the stream itself, reduced-resolution or partial decoding does not depend on a container. What the codestream does not say is what the samples mean. The JP2 file format exists to add that layer: it wraps the codestream in boxes that carry, among other things, at least one Colour Specification box and, optionally, an Intellectual Property box for rights information.

Key facts

  1. How do I recognize a .j2c file? By its first bytes, not its name. A codestream starts with FF 4F FF 51, the SOC marker followed by the SIZ marker, while a JP2 file starts with the 12-byte signature box 00 00 00 0C 6A 50 20 20 0D 0A 87 0A followed by a File Type box. The registered media type for a bare codestream is image/j2c, which lists both j2c and j2k as file extensions; image/jp2 is the type for the boxed file format.
  2. Does the file say which color space its samples are in? No. The image/j2c registration states that a JPEG 2000 codestream does not contain information on the color space of the image and that this is implied or provided out of band. A JP2 file must contain at least one Colour Specification box; a .j2c file has no equivalent. Whoever displays or converts a bare codestream is therefore relying on an assumption or on information kept somewhere else.
  3. Can every JPEG 2000 Part 1 decoder read every .j2c file? Not necessarily. According to the registration, a codestream can use capabilities from any part of the JPEG 2000 family, and the capabilities a decoder needs are signaled by the Rsiz parameter in the SIZ marker segment together with the CAP marker segment. The leading bytes do not tell these apart: OpenJPEG, for example, detects High Throughput .jhc codestreams with the same four-byte signature it uses for .j2c.
  4. Is a .j2c file lossless or lossy? The suffix does not say, but the stream does in part. In a Part 1 codestream, the coding style marker segments record whether the 9-7 irreversible or the 5-3 reversible wavelet filter was used. The irreversible filter is the lossy path. The reversible filter makes lossless coding possible without proving it, because T.800 notes that the reversible multiple component transformation, which is used only with the 5-3 filter, may be used in truncated codestreams to provide lossy compression. A codestream that uses the Part 2 extensions (T.801 | ISO/IEC 15444-2) can carry other values in the same field, each selecting a transformation kernel defined in the stream itself.

When J2C Files matter

A decoder must accept a bare JPEG 2000 codestream instead of assuming that every asset has JP2 container metadata. Workflows needing color or rights information may require it from another source.

Sources

Turn media knowledge into a working pipeline

Connect uploads, processing, AI, storage, and delivery through one declarative API — with the encoding stack, scaling, and format churn handled for you.

Try Transloadit for free