ihateaudio

iPhone Ringtone Maker

Cut a ringtone, get an M4R, and we'll walk you through installing it.

Drop an audio file here

or paste one from your clipboard

MP3 · WAV · M4A · AAC · OGG · FLAC and moreYour file stays on your device. Always.

How to use it

  1. Drop the song onto the page. It is read straight off your disk, so an unreleased mix is exactly as private here as it is in your own music folder.
  2. Drag the handles over the part you want. The selection is capped at 30 seconds because iOS refuses to install anything longer, and the tool trims it for you rather than letting you find out after syncing.
  3. Press play with loop turned on and listen to the first second. A ringtone is judged almost entirely on how it starts, so land the beginning on a beat rather than halfway through a word.
  4. Turn on the fade-out if the clip stops mid-phrase, then click Download ringtone to get an M4R file.
  5. Sync the M4R to the iPhone with Finder on macOS or iTunes on Windows. The full instructions appear under the tool once the file has saved.

What an M4R file really is

An M4R is an AAC audio stream in an MP4 container, the same thing as an M4A, with three different letters on the end. iOS never looks inside the file to decide what it is; it looks at the extension. That is why renaming an M4A to M4R works, why renaming an MP3 to M4R does not, and why the whole ringtone format is less a format than a naming convention that stuck.

The consequence is an encoding step. Every browser can decode AAC, because it has to play video, but none of them expose an AAC encoder to JavaScript. Producing a genuine M4R therefore needs a real encoder, and this page loads a WebAssembly build of ffmpeg the first time you export one. It is a sizeable download and it happens once, after which the browser caches it. Decoding, trimming and the fade all happen instantly before that point, and the audio still never leaves the tab: the encoder travels to your file rather than your file travelling to a server.

Choosing 30 seconds that work as a ringtone

A ringtone is not a short song. It is heard from a pocket, usually across a room, and almost always for less time than it lasts, most people answer or silence a call within five or six seconds. Everything that matters is at the front.

That argues for starting on a downbeat with something recognisable immediately: a vocal hook, a riff, a drop. Long intros, held notes and slow builds are wasted, because the call is answered before they resolve. Avoid starting on a breath or a room-tone gap, which reads as a delay in the phone rather than part of the music. Loop the selection while you audition it (the loop button in the transport is there for this) and listen specifically to the seam where the end meets the start again.

The fade-out matters less than you would think, since the tone rarely reaches its end, but it is worth turning on when a clip stops mid-phrase. Two seconds is enough to make an arbitrary cut sound intentional without swallowing the part you chose.

Why iOS makes this harder than it should be

Android treats a ringtone as an ordinary audio file: put an MP3 anywhere the phone can see it, point the picker at it, done. iOS treats tones as a synced device library, so a file on the phone is not a tone until something tells the system it is one. And nothing in iOS does that. The Files app cannot, Safari cannot, and no web page can, whatever it claims in its instructions.

The two routes Apple does support are syncing from a computer, which works identically on a Mac and a PC once you find the right window, and GarageBand on the phone, which can export any project it holds as a ringtone. Neither is difficult. Both are unnecessary steps that exist because tones remain one of the last corners of iOS that never moved off the desktop-sync model.

Questions

Why is 30 seconds the limit?
It is enforced by iOS, not by this page. A tone longer than 30 seconds is accepted by the sync but never appears in Settings → Sounds & Haptics, so you end up troubleshooting a file that was never going to work. The tool clamps the selection instead, which is why the end handle stops following your cursor once you hit half a minute.
What actually is an M4R file?
An AAC audio stream inside an MP4 container. Byte for byte the same thing as an M4A. iOS decides whether a file is a song or a ringtone purely from the extension, which is why renaming an M4A to M4R works and renaming an MP3 does not. The container has to be MP4 to start with.
Can I install the ringtone directly from my iPhone?
No, and nobody else can either. Safari on iOS will happily download the .m4r into the Files app, but iOS provides no route from Files to the ringtone list. The only two supported paths are syncing from a computer, or importing the audio into GarageBand on the phone and using Share → Ringtone. Any site that claims otherwise is describing a step that does not exist.
Why does this tool take longer than the trimmer?
Browsers ship an AAC decoder but not an AAC encoder, so writing a real M4R needs a proper encoder. The first export downloads a WebAssembly build of ffmpeg (roughly 31 MB) and the browser caches it afterwards, so a second ringtone exports immediately. The audio itself still never leaves your device; the code comes to the file.
Where does the name in the ringtone list come from?
From the filename, minus the extension. The download is named after your source file with "-ringtone" appended, so rename it before you sync if you want something tidier in the list. Renaming it later on the phone is not possible without re-syncing.
Will an M4R work on an Android phone?
No. Android does not recognise the extension and most ringtone pickers will not even list the file. Use the Android ringtone maker instead, which produces an MP3 and has no length limit.
Can I use the same file as a text tone or an alarm?
Yes. Tones synced to an iPhone appear in every tone list, so the same M4R can be picked under Ringtone, Text Tone or New Voicemail. For a text tone, cut something closer to two or three seconds. A 30-second alert repeated through a workday gets old quickly.