Convert MP3 to M4R (iPhone Ringtone)

Cut any MP3 down to a 30 second AAC ringtone an iPhone will accept, with a start time field. Runs on your own device, no sign-up and no watermark.

🌐 Español

Drop your file here (.mp3)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

An M4R is an MP4 file wearing a different letter

There is no M4R codec and no M4R container. An .m4r is an ordinary MPEG-4 audio file, structurally the same thing as the .m4a files Apple has produced since the iTunes Store opened, given a different extension so that iOS files it under ringtones instead of under music. That is the whole trick, and it is also why this conversion is short work rather than a specialist job.

FFmpeg, however, does not recognise the extension. Left to guess a muxer from a filename ending in .m4r, it has nothing to go on, so this tool names the format explicitly with the muxer that writes the .m4a and .m4b family. The resulting file is a genuine MPEG-4 container carrying an AAC stream, which is exactly what the phone is looking for, rather than an MP3 that has been renamed and will simply be ignored.

The exact command behind the button

Everything the tool does resolves to one FFmpeg invocation. For a start time of 45 seconds it is:

ffmpeg -ss 45 -i input.mp3 -t 30 -c:a aac -b:a 128k -movflags +faststart -f ipod output.m4r

Leave the start at zero and the first two arguments disappear entirely; the module only emits a seek when the number you typed is greater than zero. The rest never changes. The duration flag is a hard 30, the codec is AAC at 128 kbps, the index is moved to the front of the file so a player can begin before the whole thing is read, and the output format is stated rather than inferred.

Worth noticing what is absent. There is no probe pass, no duration read, no loudness pass and no fade. Those would all be defensible additions, and each would cost a second run over the file for something a five second decision in a music player usually settles better.

Choosing the 30 seconds a phone will actually play

  1. Drop your MP3 on the box, or click Choose a file. Only .mp3 is accepted, and anything else is named and refused before any work begins.
  2. Type a Start time (seconds) in plain seconds. A hook at 1 minute 15 is 75, and 2 minutes 30 is 150. Leave it at 0 to start from the top.
  3. Click Convert MP3 to M4R (iPhone Ringtone) and watch the percentage. Cancel is available while it runs, though it also empties the box.
  4. Use the Download link that appears, which is already named after your source file with the new extension on it.
  5. Process another clears the page if you want to try a second start time from the same track.

The intro of a song is nearly always the wrong 30 seconds. Ringtones are heard for two or three seconds before somebody answers, so the part that has to be instantly recognisable needs to be at the front. Pick the timestamp by playing the track in whatever you normally use, note where the hook lands, and enter that. Because the seek runs at the container level, jumping to 3 minutes 20 of a long file costs no more than starting at zero.

When to cut the clip somewhere else first

The single field on this page is a start, never a length, so there is no way to produce a tone shorter than 30 seconds except by starting near the end of the track. For a short text tone or an alert, Cut MP3 is the better first step: it takes a start and an end in seconds and copies the compressed frames across without decoding them, so the trim itself costs nothing in quality. Bring the resulting clip back here with the start left at zero and this page does the format work only.

That ordering also helps when you are auditioning several candidates. Cutting three ten second clips and listening to them is quicker than converting three full ringtones and syncing them all to a phone to find out which one you like.

What this tool hands over, and what Apple still wants from you

The output is a correctly formed MPEG-4 file with a ringtone extension, and that is the end of what a browser can do. It cannot reach into your phone. Getting the file onto the device is still Apple’s own step, through Finder on a Mac or through iTunes or the Apple Devices app on Windows, dropping the file into the device’s tones list and syncing. After that it shows up alongside the built-in tones in the sound settings.

If you ever want to go the other way and turn an old ringtone back into something you can edit, note that M4A to MP3 accepts .m4a and .aac and nothing else, so an .m4r has to be renamed before that page will take it. The bytes inside are compatible; the drop box only reads the extension.

The cost of a second lossy pass, and when it matters

Every run here decodes your MP3 and re-encodes to AAC, so this is a lossy format being turned into a different lossy format. The artefacts do not cancel out, they accumulate. At 128 kbps through a phone speaker in a coat pocket that is academic, which is why the rate is fixed and not exposed as a choice.

It stops being academic if you feed it something already thin. A voice memo compressed for messaging, or a track ripped at a low rate years ago, arrives with detail already gone and leaves with a little more of it missing. If you have the same music as a WAV or FLAC somewhere, converting that to MP3 at a healthy rate first and then coming here gives a better ringtone than starting from the smallest copy you own. The bitrate guide covers where those thresholds sit for speech against music, and the rest of the audio tools here handle the conversions that get you there.

See it in action

Screenshot of the Convert MP3 to M4R (iPhone Ringtone) tool with sysfenix-sample.mp3 (72 KB) loaded, Start time (seconds) set to 0
Convert MP3 to M4R (iPhone Ringtone) mid-process: sysfenix-sample.mp3 (72 KB) loaded, Start time (seconds) set to 0.
Screenshot of the Convert MP3 to M4R (iPhone Ringtone) result screen showing sysfenix-sample.m4r ready to download (48 KB, 33% smaller)
The finished result: sysfenix-sample.m4r ready to download (48 KB, 33% smaller). The download link is a local blob URL — the file never leaves your device.

Frequently asked questions

The tool never asked me how long I wanted the ringtone. Why is there no end time field?

Because the length is fixed rather than chosen. The command always carries a 30 second duration flag, so the only thing you control is where those 30 seconds begin. A track shorter than that simply runs out and the file ends early, which is fine. If you want a five second text tone, cut the piece you want on the Cut MP3 page first, since that one has both a start and an end field, then bring the short clip here and leave the start at zero.

What bitrate does the ringtone come out at, and can I raise it?

It is fixed at 128 kbps AAC and there is no control for it on the page. That is a deliberate choice for a file that plays through a phone speaker for a few seconds at a time, where the ceiling is the hardware rather than the encoder. It does mean the conversion is a lossy source being re-encoded into a second lossy format, so a ringtone made from a 96 kbps podcast rip will sound like a 96 kbps podcast rip.

My clip starts a fraction of a second later than the number I typed. Is that a bug?

No, it is the seek landing on a frame edge. The seek flag is placed before the input so that the demuxer jumps rather than the decoder grinding through the whole song, which is what keeps a start deep inside a long track near instant. MP3 frames hold 1152 samples each, which is about 26 milliseconds at CD sample rate, so the practical resolution of that jump is one frame rather than one sample. Nobody hears the difference in a ringtone.

Nothing checks whether my start time is inside the song. What happens if I overshoot?

The module never reads the file duration, so there is no validation step and no warning. It hands your number straight to the seek and lets the encoder deal with whatever it finds past that point, which for a number beyond the end of the track is nothing worth encoding. If a run finishes suspiciously fast and the download is tiny, the start time is the first thing to check.

Can I feed it an M4A, a WAV or a video file to pull a ringtone from?

Not on this page. The drop box accepts one extension, and anything else is refused by name before any work starts, with the accepted list printed alongside. Convert to MP3 first with one of the audio converters here, then come back. The narrow list is why the module can hand the file to FFmpeg under a fixed name and skip any format detection.

Why does the very first conversion sit at zero percent for a while?

The FFmpeg build that does the work is WebAssembly fetched from a public CDN the first time a tab needs it, and it is a few tens of megabytes. That download is the pause, not the encoding, which for 30 seconds of audio is quick. Once it has loaded it stays resident for that tab, so a second ringtone starts encoding immediately. Your MP3 is never part of that traffic.

Related tools