A picture changes how a text feels. A plain line saying "new spring menu is up" competes with every other notification on the phone. The same line with a photo of the dish looks more like a message from someone the reader knows. That is why marketers want MMS. It is also why some of them pay for images on texts that never needed one.
This guide covers what bulk MMS software has to handle and where it adds cost or risk. It explains the file size limits carriers actually accept, how to think about MMS cost next to SMS segments, which phones get the full experience, and the kinds of sends where a picture tends to earn its price. We make Ready, so the examples use Ready's API and pricing where they apply. The carrier rules work the same way on any platform.
What "bulk MMS software" actually has to do
Sending one picture message from a phone is easy. Sending the same image to 5,000 opted-in contacts from a business number brings in problems a phone app never deals with:
- Media hosting and sizing. The image has to sit at a reachable URL in a format carriers accept, at a size they won't reject or squash.
- A registered sender. In the US, business texts from a local 10-digit number go over A2P 10DLC. Unregistered traffic gets filtered by carriers, and that applies to MMS as much as SMS. The 10DLC cost breakdown explains the fees.
- Opt-out and quiet-hours handling. Every bulk send needs STOP handling that carries across campaigns, plus a hold on texts that would land outside permitted local hours.
- Throughput pacing. A fresh standard 10DLC campaign gets an approximate rate of 1 to 4 segments per second. A good tool queues the send at that pace instead of firing everything at once and getting throttled.
- Cost visibility. You should know what the send will cost before you press go, not after.
If a tool only covers the first point, it is a media uploader, not bulk MMS software.
File size limits: the number that actually matters
Carriers publish no single official limit, and what each one accepts varies. As a working rule:
| What you send | Practical guidance |
|---|---|
| Still image (JPG/PNG) | Keep it under 1 MB, which is the size the Ready app holds a picture to. Most US carriers deliver that without recompressing. |
| GIF | Treat it like a short video. Large animated GIFs often get compressed into a mess or stripped. |
| Short video | A few seconds, heavily compressed. Carriers commonly cap MMS somewhere in the low single-digit megabytes and many downscale anything near the cap. |
| Long video | Don't attach it. Host it and send a link. |
The safe approach is to design for the smallest pipe. An image that is 1080 pixels wide and saved as a compressed JPG usually lands clean. A 6 MB phone photo straight off the camera roll may arrive blurry or not at all, depending on the recipient's carrier. For the details on video length, see how long a video you can text.
Also remember the recipient's side. MMS needs mobile data to download. A contact with data switched off, or in a weak-signal area, may see a placeholder until the file loads. Your text should still make sense if the image never shows up.
MMS cost vs SMS: do the math before you attach
MMS is billed differently from SMS. An SMS is metered in segments. An MMS is usually billed as one message that costs more than a single SMS segment. Before you budget a campaign, note that on Ready an MMS is a flat $0.021 plus a $0.0095 MMS carrier fee, $0.0305 all-in. Then ask a simple question: how many SMS segments does one MMS cost on my plan?
Here is the SMS side, using Ready's Standard rate of $0.0075/segment plus a $0.0045 carrier fee per segment.
Worked example (assumptions stated): a 5,000-contact opted-in list. The message is plain text, so there is no image to price.
- A 140-character text with no emoji = 1 segment. That's 5,000 segments, billed at the Standard rate plus 5,000 × $0.0045 in carrier fees.
- A 300-character text = 2 segments (multipart segments hold 153 characters each). That's 10,000 segments, plus 10,000 × $0.0045.
- A 175-character promo with one emoji = 3 segments. The emoji switches the text to unicode, which holds 67 characters per multipart segment. That's 15,000 segments, plus 15,000 × $0.0045.
These all-in figures don't include screening. TCPA/DNC scrubbing and landline validation each add $0.003 per segment when you switch them on for an account. Both are off by default.
Look at the third line. One careless emoji tripled the bill on a text with no picture at all. Long, emoji-heavy SMS can cost as much as a single MMS. If your copy already runs to three segments, an image plus a short caption may not cost much more. If your copy fits in one clean segment, an image is a real price jump. You should be able to point to the reason it's worth paying for. We go further on this tradeoff in SMS vs MMS: when the extra cost is worth it, and on cutting media charges in how to avoid paying for MMS.
Inbound replies are billed like sent texts on Ready (per segment plus the carrier fee). A picture campaign that gets lots of replies costs a bit more than the send alone. That is usually a good problem to have.
Carrier and device support: who sees what
MMS is standard on US mobile carriers, so delivery is not the main issue. The differences show up in how it's displayed:
- Smartphones on mobile data get the image inline. This is the experience you're paying for.
- Phones with data off or a weak signal may show a download prompt or nothing until the file loads.
- Landlines can't receive MMS. If your list has landlines mixed in, those sends go nowhere useful. Ready refuses numbers it already knows are landlines on every account, at no charge. Landline validation, which looks up the rest, costs $0.003 per segment and is off by default. You can also check a single number with
GET /v1/validate/:phone. - iPhones show business MMS as a green bubble like any SMS. If you want a blue iMessage with your business name and photo, that's a different product, the blue line. It is not a bulk MMS tool: campaigns send from regular numbers, and a blue line sends photos only after the contact has replied. Its best use is ongoing one-to-one threads.
Sending MMS through the API
If you're building picture texts into your own product, the Ready Messaging API takes a media_url on a send. A single picture text looks like this:
POST https://api.tryready.com/v1/messages
X-API-Key: <your key>
Idempotency-Key: 6f1c2a3e-8b4d-4e2a-9c71-0d5b3f7e1a22
{
"to": "+12125550199",
"body": "Your table for 4 is booked for Friday. Here's the patio we've saved for you.",
"media_url": "https://example.com/patio.jpg",
"consent_attested": true
} The Idempotency-Key header means a retried request never sends twice. That matters a lot when each message carries a media charge. consent_attested is your promise that this person agreed to texts. Ready records that attestation per send (who sent it, to how many, when) as an audit trail. It is not a per-contact consent record, so keep each contact's actual opt-in time and wording in your own system.
To send to many numbers at once, use the bulk endpoint, POST /v1/messages/bulk. It takes up to 100 recipients per call, so split larger lists into batches. It accepts media_url (one image URL, sent to every recipient); the bulk messages docs list the rest. The bulk SMS API guide covers batching and pacing.
Opted-out and numbers on your Ban list are refused up front and not charged. A campaign text that would land during the recipient's quiet hours is held and sent later, and it's only charged when it sends; a one-to-one or API text is held only if the window opens within 6 hours, and is otherwise refused.
When a picture actually lifts engagement
We won't give you a percentage lift, because it depends on your list, your offer and your creative. These are the patterns where teams most often find images pay for themselves:
- Product launches and restocks. The product is the message. A photo answers "what is it?" faster than any caption.
- Event flyers and menus. Date, place and look in one glance. Still keep the key details in the text body for anyone whose image doesn't load.
- Before/after and proof shots. Home services, salons and detailing businesses, where the result is the selling point.
- Real estate. A listing photo pulls more interest than a street address.
- Visual instructions. "Here's where to park" with a marked-up map.
And where a picture is usually wasted money:
- Appointment reminders, order confirmations and one-time codes. People want the fact, fast.
- Any send to a list with lots of landlines or older devices.
- Texts where the image just repeats the words, like a logo above a sentence that already names you.
A quick test settles it. Split a segment of your list and send half the plain SMS and half the MMS. Compare replies and clicks against the cost difference you worked out above. If the picture version doesn't beat the plain one by more than it costs, go back to SMS.
Compliance doesn't change because there's a picture
Everything that applies to SMS applies to MMS:
- Consented contacts only. Cold outreach belongs on the phone and in the mail. Texts go to people who opted in or replied.
- Register first. On Ready, brand and campaign registration happens in-app. You pay $25 at submit (the first month), then $25/mo for registration and $2 per number each month. Most approvals take 2 to 7 days. Describe the media you plan to send honestly in your campaign description.
- Media content gets filtered too. An image doesn't hide restricted content from carrier filters. Registration also doesn't protect you from content-level blocking.
- STOP handling and quiet hours apply to every send. Ready enforces both automatically.
- Advocacy, political and fundraising sends need Ready's written OK first. Email support@tryready.com before the first send and wait for our reply.
These controls reduce risk. They don't make anyone immune to lawsuits, and compliance is still the sender's responsibility.
The practical takeaway
Bulk MMS is worth it when the image does work that words can't. Use it for products, places, results and events. Keep files under 1 MB. Write a text body that still makes sense if the image never loads. Price the send by asking how many SMS segments one MMS equals on your plan. Then test plain against picture before you commit a whole list.
To try it, sign up and use your first 20 free texts on one-to-one sends before you register; campaigns are paid from the first text, and to send any text you need a card and a number ($2 a month, the first month charged when you get it). Then register your brand and campaign, and run a small split test before the full send. The pricing page has the per-segment card. The Messaging API docs have everything media_url supports.