# How transcoding works

> Convert a video or audio file into an MP4, WebM, or M4A file.

A transcode converts a video or audio file into the format you need. Choose your settings when you create it, and Chunkify prepares the finished file.

Use transcodes to create downloadable videos or export audio.

For video streaming, use [Video Streaming](/docs/video-streaming). To create images or sprite sheets, see [Generate thumbnails](/docs/thumbnails/quickstart).

## From a Source to an output file

```mermaid
flowchart LR
    hosted["Hosted file"] --> source["Source"]
    local["Local file"] -- "Upload" --> source
    source --> transcode["Transcode"]
    transcode --> output["Output file"]
    transcode -- "Notifications" --> webhooks["Webhooks"]
```

<steps>
    <step title="Add your file">
        [Upload a video or audio file](/docs/integration/video-upload), or use one that is already online. Chunkify creates a Source to identify it.
    </step>

    <step title="Create a transcode">
        Choose the format, quality, and where to save the finished file, then create the transcode.
    </step>

    <step title="Let Chunkify process it">
        Chunkify converts your file using the settings you chose.
    </step>

    <step title="Get your file">
        A [webhook](/docs/integration/webhooks) notifies your application when the transcode is ready and includes the file's details and links. Your application can then download the result or make it available to your users.
    </step>
</steps>

## Choose your output

| Output | Guide |
| --- | --- |
| MP4 video | [MP4](/docs/transcoding/formats/mp4) |
| WebM video | [WebM](/docs/transcoding/formats/webm) |
| M4A audio | [Audio exports](/docs/transcoding/formats/audio) |

Create a separate transcode for each file you need. The [format guides](/docs/transcoding/formats) explain the settings for each output.

## Follow the process

[Lifecycle and files](/docs/transcoding/lifecycle) explains how to follow progress, receive notifications, and download the result. See [Pricing](/docs/transcoding/pricing) for processing costs.

Existing integrations that call the Jobs API have separate [legacy documentation](/docs/workflow).
