Take apart a Content-Type / media-type string into its type, subtype, +suffix, and parameters — or compose one from scratch. Validates the RFC 7231 / RFC 6838 grammar, surfaces the structured-syntax suffix family (+json, +xml, +cbor, …), normalizes charset casing, and generates safe multipart/* boundary tokens.
Boundary tokens may be up to 70 chars from a safe ASCII subset (RFC 2046). This tool only emits characters that never need quoting.
type "/" subtype *( ";" parameter ). type and subtype are tokens (no spaces, no (),/:;<=>?@[\]{}). Parameters are name=value; values that contain tspecials must be wrapped in double quotes, with \ escaping " and \.type, subtype, and parameter names are ASCII case-insensitive (RFC 7231 §3.1.1). Parameter values are usually case-sensitive — charset being the famous exception (UTF-8 and utf-8 are equivalent).application/vnd.acme.thing+json means “parse the body as JSON, but the schema is vendor-specific.” Registered families: +json, +xml, +ber, +cbor, +der, +fastinfoset, +gzip, +json-seq, +jwt, +sqlite3, +tlv, +wbxml, +zip, +zstd.vnd.* (vendor), prs.* (personal), x.* (private / experimental, discouraged outside x-). Unprefixed subtypes belong to the standards tree.application/json, RFC 8259 forbids charset — JSON is always UTF-8; many tools quietly ignore it, but some validators flag the header.multipart/*. Must not appear anywhere inside the body, hence the long random tokens.Accept negotiation, never in a response's Content-Type. If you see ;q=0.8 in a parsed Content-Type, it's probably misuse.