Open the 404 report for almost any busy WordPress site and /apple-touch-icon.png is near the top, usually with /apple-touch-icon-precomposed.png right behind it. Hundreds a day. Nobody can see a 404 page for an icon, so they’re easy to ignore. We looked at what they cost across our hosting fleet, and on the busiest sites it’s more than noise.
What’s asking for it
iPhones, iPads and Macs request an icon from fixed addresses at the root of every site. They do it when someone shares a link in Messages, opens the share sheet, or saves the site to a home screen.
In our logs, they keep asking even where the page already has a <link rel="apple-touch-icon"> tag. Over ten days in October, the clients making these requests were:
NetworkingExtension(link previews): 67%com.apple.WebKit.Networking: 14%- Safari on iPhone and iPad: 12%
- Everything else: 7%
What a miss costs WordPress
There’s no file at that address, so Apache passes the request to index.php. WordPress boots, loads every plugin, finds nothing to match, and renders the theme’s 404 page. All for the sake of an icon.
Across our fleet, for 15 to 24 October:
- 47,643 of these requests, from 172 sites
- An average of 182 KB per 404 response as logged. Per site, the average 404 response was 81 KB at the median (119 sites with at least ten 404s), and nearly 900 KB at the largest
- About 8.7 GB of logged response data over the ten days. Two sites accounted for more than half of it
Those are logged response sizes, not measured network traffic. Compressed responses cost less bandwidth, and we haven’t captured what the devices send in Accept-Encoding.
Render time matters as much as the size. In one test from our own network, on three of our busiest sites, a 404 for the icon took 0.26 to 0.61 seconds before the first byte arrived, against 0.07 to 0.11 seconds for a static PNG from the same servers. It’s a small sample, but the gap was consistent. Each 404 holds a PHP-FPM worker for that time.
Fix it now
The quickest fix is to give WordPress something to serve, and stop it rendering the theme for every request.
- Set a Site Icon under Appearance, Customise, Site Identity. Use a square image of at least 512 pixels with a solid background. Transparent areas show as black corners on an iPhone home screen.
- Install Easy Apple Icon. It answers the Apple icon requests from your Site Icon and saves the PNG files into the site root, so later requests are served as static files.
- Visit
https://your-site.example/apple-touch-icon.pngand check you get your icon.
Don’t answer these requests with a 410. The crawler in our earlier post was an unwanted request, so a 410 was right. These devices want an icon, so they should get one.
Stop it happening again
Check your own logs before you assume the report is noise. On a standard Apache combined log, this shows the icon requests and their status codes:
# Scan the access log for "apple-touch-icon", grouped by response code and count.
grep -F '/apple-touch-icon' /path/to/access.log | \
awk '{print $9, $7}' | sort | uniq -c | sort -rn | head -20Replace the path with your site’s log file. If most of the lines are 404s, the fix above will change them. If a few hundred 404s a day sit on a site with a large theme, that’s worth fixing whatever the icon.
What this doesn’t change
The devices still ask. The plugin makes each answer cheap, and it doesn’t stop the requests. A site with no Site Icon set still gets an empty 404 for each request, because the plugin has nothing to send.
For a small site with a quiet 404 report, none of this matters much. But for a busy site this is a quick win that will cut your bandwidth, and add a bit of Apple-specific polish.
