on-device filtering is the right way to go, but it shouldn’t be a matter of sending metadata about the user to a service- instead services should provide standard metadata about the content to the device and the device can choose what, if anything, to display.
This preserves privacy better by keeping more information about the user local, and gives people better tools to decide what metadata categories they want to filter- for their kids and for themselves.
That solution doesn't actually work, and it angers me that people can't see why it doesn't work. That solution requires that the entire website must be child-safe or none of it. That solution requires that Tumblr must ban porn if Tumblr has any underage users. The alternative would be that Tumblr would randomly not load for underage users because some recommendation or ad would be over 18, and so it would rapidly have none.
Why must an age rating apply to an entire website?
As one example, the Internet Content Rating Association (ICRA) (and to a lesser extent the prior Recreational Software Advisory Council (RSACi)) had a rating scheme that allowed sites to provide a default rating label that was then overridden for individual pages and resources using <meta> tags and RDF-based labels. For example, Tumblr could set a family-friendly default rating and append a different rating on specific user pages, images, or ads.
An even more granular scheme could be applied via HTML attributes which would allow an individual section, image, link, or text snippet to be marked e.g. as "sexual", "violent", "substance use", "spoiler", or even "unknown" for unreviewed user-provided content. Then leave it up to web browsers to choose whether and how to render elements with these attributes. (Hidden entirely? With censor bars? Pixelated?)
There would be substantial logistical and regulatory challenges to get websites to comply, but it doesn't seem substantially harder than the current age verification schemes.
That's much harder to implement. If you ban advertising eg. online casinos to underge users, the service would have to send two different ads (one 18+ and one for younger people too), and the browser would have to decide which one to play. Same for eg searching on google, browsers would have to filter out every <div> with adult content, meaning half the page would be empty, but with a browser "underage" flag, google could just turn on safe search and not allow turning it off.
This preserves privacy better by keeping more information about the user local, and gives people better tools to decide what metadata categories they want to filter- for their kids and for themselves.