Great question!

To the best of my understanding, the main difference (at least for FedEx, UPS, and DHL) is in the packages. USPS is a postal services, primarily letters. UPS and FedEx and DHL are shipping companies.

USPS is always better for anything that can be stuck in an envelope. Sending a letter? Use USPS. (Maybe give it a hot second for the current kerfuffle to die down. If you’ve got the cash, you can support them directly by buying USPS merch from the site; I got a book on art deco mailboxes for myself and a stamp dispenser for my mom. They also have bags and t-shirts.)

Now, for bigger packages, companies like FedEx, UPS, and DHL may be a better choice for you. They have different policies for things like package insurance, different speeds to get things to places, etc. They are also made specifically for medium-to-large packages. Most of them will immediately hand off letters and some smaller packages to USPS, unless it’s an express/emergency letter. (Soapbox time: shipping things express/emergency is incredibly damaging ecologically. Please avoid it unless it’s a legitimate emergency, like medication.)

If you speak with small businesses that handle things like stickers, pins, and apparel, you’ll find that those in small towns especially end up sending pins and stickers via USPS, and apparel via UPS or FedEx. Some small, local post offices can get overwhelmed by the waves of outgoing orders that a business produces.

That doesn’t mean “You should always use USPS for letters and always use a shipping company for packages.” If you ship one package every few months and it’s not a fragile thing, use USPS! I certainly do. But if you run a small business or charity that involves shipping out multiple medium-to-large packages per day or per week, or lots and lots of small packages, then you might be better off using a shipping company. Check with your local USPS office to figure out if they can handle the influx. If you live in a large city, it’s probably a drop in the pond. If you live in a small town... maybe not.

DHL in particular is preferred for a lot of international orders. Research your options, etc.

THE EXCEPTION: Amazon.

Oh god, Amazon.

Unlike FedEx, DHL, and UPS, Amazon is not primarily a shipping company. They’re an eCommerce website that developed a shipping branch (along with a million other things) in order to consolidate their services.

They also outsource a lot of their shipping to USPS. However, a lot of what they do is predicated on having warehouses full of commonly-ordered goods in the vicinity already. What they do is less “we ship your new pillow in from across the country in less time than the USPS” but rather “we have your new pillow on the other side of the state already and can cut down on time because we cut down on distance.”

This isn’t... inherently a bad thing. On the surface, it’s not that different from ordering delivery from a local take-out restaurant.

Except it normalizes overnight delivery for cheap. Because of Amazon, places all across the US consider overnight delivery the norm, 5-8 business days the cheapo option, and 2-3 weeks unreasonable, even for packages that are coming in from other continents.

And I cannot emphasize this enough: this is really bad for the environment, small businesses, marginalized communities, and Amazon’s employees.

Overnight delivery is not the norm unless it’s something that’s less than, what, fifty miles away? Overnight shipping from across the country should take several days, because when it doesn’t, it’s flying by air.

And that wastes so, so, so much more gas than ground/sea shipping.