User Rating 0.0
Total Usage 0 times
Drop a JPG file here or click to browse JPEG files only · Max 50 MB
Is this tool helpful?

Your feedback helps us improve.

About

Every JPEG file supports an invisible text payload called the COM (Comment) marker, defined by the marker code 0xFFFE in the JPEG specification (ITU-T T.81, Annex B). Most image viewers and social media platforms silently strip these markers, which means any comment you embed survives only in the raw file. This tool performs direct binary injection into the JPEG byte stream without re-encoding, so pixel data remains bit-identical to the original. The maximum payload per COM segment is 65,533 bytes (216 3). Attempting to store comments in lossy re-encoding workflows destroys quality. This tool does not.

Common use cases include watermarking provenance (photographer name, license), embedding machine-readable tags for archival pipelines, or simply hiding a message for someone who knows where to look. Note: this is not encryption. Anyone with a hex editor or this tool can read the comment. If you need secrecy, encrypt your message before embedding. The tool also reads and displays any existing COM markers already present in the file, which is useful for forensic inspection of image origin.

jpeg comment jpg metadata hidden text exif comment image steganography jpeg com marker secret message jpg

Formulas

The COM marker segment follows the standard JPEG marker format. The binary layout of a COM segment is:

0xFF 0xFE Lhigh Llow D0 D1Dn

Where L is a 16-bit big-endian unsigned integer representing the segment length (including the 2 length bytes themselves but excluding the marker bytes). The relationship between comment byte length and segment length is:

L = n + 2

Where n is the number of bytes in the UTF-8 encoded comment string and L is the value written into the length field. The maximum value of L is 216 1 = 65,535, therefore the maximum comment payload n = 65,535 2 = 65,533 bytes. The injection offset is always byte position 2 (immediately after the SOI marker 0xFFD8). The total file size increase equals n + 4 bytes (marker + length + payload).

Reference Data

JPEG MarkerHex CodeNameDescriptionMax Payload
SOI0xFFD8Start of ImageFirst 2 bytes of every valid JPEG0 bytes
APP00xFFE0JFIF HeaderJFIF format identifier and thumbnail65,533 bytes
APP10xFFE1EXIF / XMPCamera metadata, GPS, orientation65,533 bytes
APP20xFFE2ICC ProfileColor space profile embedding65,533 bytes
APP130xFFEDIPTC / PhotoshopCaption, keywords, copyright (legacy)65,533 bytes
APP140xFFEEAdobeAdobe color transform flag65,533 bytes
COM0xFFFECommentArbitrary UTF-8 text payload (this tool)65,533 bytes
DQT0xFFDBQuantization TableDefines compression quality matrices65,533 bytes
SOF00xFFC0Start of Frame (Baseline)Image dimensions, bit depth, components65,533 bytes
SOF20xFFC2Start of Frame (Progressive)Progressive scan image parameters65,533 bytes
DHT0xFFC4Huffman TableEntropy coding table definitions65,533 bytes
SOS0xFFDAStart of ScanBegins compressed image data streamVariable
EOI0xFFD9End of ImageLast 2 bytes of every valid JPEG0 bytes
DRI0xFFDDRestart IntervalDefines restart marker spacing4 bytes
RST0-RST70xFFD0 - 0xFFD7Restart MarkersError recovery sync points in scan data0 bytes

Frequently Asked Questions

No. This tool performs direct binary injection. The compressed image data (SOS through EOI) is never decoded or re-encoded. Every pixel remains bit-identical to the original. The file size increases only by the comment length plus 4 bytes for the marker and length field.
Almost never. Facebook, Instagram, Twitter/X, and most messaging apps strip all non-essential JPEG markers (including COM, EXIF, and IPTC) during their server-side re-encoding pipeline. The comment will survive in the raw file you distribute directly (email, cloud storage, USB). If preservation through social platforms is required, consider steganographic embedding into the pixel data itself, which is a different technique.
Yes. The JPEG specification places no limit on the number of COM markers. Each is an independent segment with its own length field. This tool injects one COM segment and preserves any existing COM segments already present. If you run the tool multiple times on the same file, each pass adds an additional COM segment.
The JPEG standard (ITU-T T.81) does not specify a character encoding for COM segments. This tool encodes text as UTF-8 using the TextEncoder API. Most modern readers (exiftool, ImageMagick identify, this tool) interpret COM data as UTF-8. Legacy software may display mojibake for non-ASCII characters. For maximum compatibility, restrict comments to ASCII (code points 0x20 through 0x7E).
No. EXIF data resides in the APP1 segment (marker 0xFFE1) and follows a TIFF-based structure with typed fields (camera model, GPS coordinates, timestamps). The COM segment (0xFFFE) is a flat, unstructured text blob with no schema. EXIF editors cannot read COM markers and vice versa. Tools like exiftool can read both, but they are architecturally separate.
This tool enforces the maximum payload size of 65,533 bytes per COM segment. If your UTF-8 encoded text exceeds this limit, the tool will truncate to the nearest valid UTF-8 character boundary below the limit and display a warning. For very long payloads, you would need to split across multiple COM segments, which this tool does not currently support.