Convert MP3 to FLAC
Turn MP3, the universally supported compressed audio format, into FLAC, lossless compressed audio that preserves every bit of the original. FileChanger runs the audio conversion in one call, no local tooling to install.
In the browser
Upload a file and download the result, no pipeline required. Open the converter.
One API call
POST the file with from=mp3 and to=flac, get the converted bytes back. Jump to the code.
From an agent
FileChanger ships an MCP server, so agents can run this conversion themselves. See the docs for setup.
Uploading something you care about? How to convert files safely explains what to check before you trust any converter, and Security and data handling describes exactly what we store and for how long.
Convert MP3 to FLAC in code
The same call from any language: POST the file to /api/convert, the response body is the converted file.
curl -X POST https://filechanger.io/api/convert \
-H "X-Api-Key: fc_your_api_key_here" \
-F "file=@input.mp3" \
-F "from=mp3" \
-F "to=flac" \
-o output.flacimport requests
with open("input.mp3", "rb") as f:
response = requests.post(
"https://filechanger.io/api/convert",
headers={"X-Api-Key": "fc_your_api_key_here"},
files={"file": f},
data={"from": "mp3", "to": "flac"},
)
response.raise_for_status()
with open("output.flac", "wb") as out:
out.write(response.content)const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("from", "mp3");
formData.append("to", "flac");
const response = await fetch("https://filechanger.io/api/convert", {
method: "POST",
headers: { "X-Api-Key": "fc_your_api_key_here" },
body: formData,
});
const output = await response.blob();import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.file.Path;
String boundary = "----FormBoundary" + System.currentTimeMillis();
byte[] fileBytes = java.nio.file.Files.readAllBytes(Path.of("input.mp3"));
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"file\"; filename=\"input.mp3\"\r\n"
+ "Content-Type: application/octet-stream\r\n\r\n"
+ new String(fileBytes) + "\r\n"
+ "--" + boundary + "\r\nContent-Disposition: form-data; name=\"from\"\r\n\r\nmp3\r\n"
+ "--" + boundary + "\r\nContent-Disposition: form-data; name=\"to\"\r\n\r\nflac\r\n"
+ "--" + boundary + "--";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://filechanger.io/api/convert"))
.header("X-Api-Key", "fc_your_api_key_here")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(BodyPublishers.ofString(body))
.build();
HttpResponse<byte[]> response = client.send(
request, BodyHandlers.ofByteArray());
java.nio.file.Files.write(Path.of("output.flac"), response.body());import Network.HTTP.Client
import Network.HTTP.Client.MultipartFormData
import qualified Data.ByteString.Lazy as BL
main :: IO ()
main = do
manager <- newManager defaultManagerSettings
initialReq <- parseRequest "POST https://filechanger.io/api/convert"
let req = initialReq
{ requestHeaders = [("X-Api-Key", "fc_your_api_key_here")] }
request <- formDataBody
[ partFileSource "file" "input.mp3"
, partBS "from" "mp3"
, partBS "to" "flac"
] req
response <- httpLbs request manager
BL.writeFile "output.flac" (responseBody response)About MP3
MP3 (MPEG-1 Audio Layer III) is the format that made digital music portable and remains the most universally playable audio there is. Its psychoacoustic lossy compression throws away the detail the ear cannot hear to shrink files dramatically, and every phone, browser, car stereo, and media player of the last twenty-five years can play the result.
Frequently asked questions
How do I convert MP3 to FLAC?
Upload your file in the browser converter and pick FLAC as the target, or POST it to /api/convert with from=mp3 and to=flac. The response body is the converted file.
Is converting MP3 to FLAC free?
Yes. Every account gets 200 MB of conversions free, metered on input size. After that you pay only for what you convert, from $0.10 per GB, with no monthly fee. See pricing for the paid tiers.
Is there an API for MP3 to FLAC conversion?
Yes, this whole conversion is one POST to /api/convert (the code examples above show it in five languages), plus an MCP server so AI agents can run it directly.
Does converting MP3 to FLAC improve the audio quality?
No, and nothing can. MP3 encoding permanently discards part of the signal, so every later copy starts from what survived. Converting to FLAC preserves that as faithfully as FLAC allows, but it cannot restore detail the encoder threw away. What you gain is a file in the shape the rest of your toolchain wants.
Why convert MP3 to FLAC before editing in a DAW?
Because a DAW has to decode MP3 before it can draw a waveform, and it repeats that work on import, on scrub, and often on every playback pass. FLAC decodes to the exact samples with no further loss, so the timeline stays responsive, edits land sample-accurately, and repeated saves and exports do not stack up generation loss the way re-encoding to MP3 would. It also sidesteps the encoder padding MP3 adds at the start of a file, which is what makes an imported MP3 sit a few milliseconds late against the grid.