---
title: "mimeTypeToContentType"
source: "https://github.com/remix-run/remix/blob/main/packages/mime/src/lib/mime-type-to-content-type.ts#L31"
---

# mimeTypeToContentType

## Summary

Converts a MIME type to a Content-Type header value, adding charset when appropriate.

By default, adds `; charset=utf-8` to text-based MIME types:
- All `text/*` types (except `text/xml`)
- All `+json` suffixed types (RFC 8259 defines JSON as UTF-8)
- `application/json`, `application/javascript`

Custom charset registered via import('./define-mime-type.ts').defineMimeType
takes precedence over built-in rules.

Note: `text/xml` is excluded because XML has built-in encoding detection.
Per the XML spec, documents without an encoding declaration must be UTF-8 or
UTF-16, detectable from byte patterns. Adding an external charset parameter
is redundant and can conflict with the document's internal declaration.

## Signature

```ts
function mimeTypeToContentType(mimeType: string): string

```

## Example

```ts
mimeTypeToContentType('text/html') // 'text/html; charset=utf-8'
mimeTypeToContentType('application/json') // 'application/json; charset=utf-8'
mimeTypeToContentType('application/ld+json') // 'application/ld+json; charset=utf-8'
mimeTypeToContentType('image/png') // 'image/png'
mimeTypeToContentType('text/xml') // 'text/xml'

```

## Parameters

### `mimeType`

The MIME type (e.g. "text/css", "image/png")

## Returns

The Content-Type value with charset if appropriate