ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount", "blurhash": "toot:blurhash", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" }, "Hashtag": "as:Hashtag" } ], "id": "https://mastodon.social/users/claresudbery/statuses/114676903679014503", "type": "Note", "summary": null, "inReplyTo": null, "published": "2025-06-13T16:04:43Z", "url": "https://mastodon.social/@claresudbery/114676903679014503", "attributedTo": "https://mastodon.social/users/claresudbery", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://mastodon.social/users/claresudbery/followers" ], "sensitive": false, "atomUri": "https://mastodon.social/users/claresudbery/statuses/114676903679014503", "inReplyToAtomUri": null, "conversation": "tag:mastodon.social,2025-06-13:objectId=1022286329:objectType=Conversation", "content": "<p>How can you use code coverage and mutation testing to add tests to legacy code? At @mendercon last year, I demonstrated this powerful technique step by step on the Gilded Rose kata, which is hosted by @emilybache on her GitHub account: <a href=\"https://github.com/emilybache/GildedRose-Refactoring-Kata\" target=\"_blank\" rel=\"nofollow noopener\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/emilybache/GildedRo</span><span class=\"invisible\">se-Refactoring-Kata</span></a> </p><p>You can watch the talk here: <a href=\"https://www.youtube.com/watch?v=0qna5cuzDI0\" target=\"_blank\" rel=\"nofollow noopener\" translate=\"no\"><span class=\"invisible\">https://www.</span><span class=\"\">youtube.com/watch?v=0qna5cuzDI0</span><span class=\"invisible\"></span></a></p><p><a href=\"https://mastodon.social/tags/CSudberyRecordings\" class=\"mention hashtag\" rel=\"tag\">#<span>CSudberyRecordings</span></a> <a href=\"https://mastodon.social/tags/CodeCoverage\" class=\"mention hashtag\" rel=\"tag\">#<span>CodeCoverage</span></a> <a href=\"https://mastodon.social/tags/MutationTesting\" class=\"mention hashtag\" rel=\"tag\">#<span>MutationTesting</span></a> <a href=\"https://mastodon.social/tags/GildedRose\" class=\"mention hashtag\" rel=\"tag\">#<span>GildedRose</span></a> <a href=\"https://mastodon.social/tags/Refactoring\" class=\"mention hashtag\" rel=\"tag\">#<span>Refactoring</span></a> <a href=\"https://mastodon.social/tags/UnitTests\" class=\"mention hashtag\" rel=\"tag\">#<span>UnitTests</span></a></p>", "contentMap": { "en": "<p>How can you use code coverage and mutation testing to add tests to legacy code? At @mendercon last year, I demonstrated this powerful technique step by step on the Gilded Rose kata, which is hosted by @emilybache on her GitHub account: <a href=\"https://github.com/emilybache/GildedRose-Refactoring-Kata\" target=\"_blank\" rel=\"nofollow noopener\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/emilybache/GildedRo</span><span class=\"invisible\">se-Refactoring-Kata</span></a> </p><p>You can watch the talk here: <a href=\"https://www.youtube.com/watch?v=0qna5cuzDI0\" target=\"_blank\" rel=\"nofollow noopener\" translate=\"no\"><span class=\"invisible\">https://www.</span><span class=\"\">youtube.com/watch?v=0qna5cuzDI0</span><span class=\"invisible\"></span></a></p><p><a href=\"https://mastodon.social/tags/CSudberyRecordings\" class=\"mention hashtag\" rel=\"tag\">#<span>CSudberyRecordings</span></a> <a href=\"https://mastodon.social/tags/CodeCoverage\" class=\"mention hashtag\" rel=\"tag\">#<span>CodeCoverage</span></a> <a href=\"https://mastodon.social/tags/MutationTesting\" class=\"mention hashtag\" rel=\"tag\">#<span>MutationTesting</span></a> <a href=\"https://mastodon.social/tags/GildedRose\" class=\"mention hashtag\" rel=\"tag\">#<span>GildedRose</span></a> <a href=\"https://mastodon.social/tags/Refactoring\" class=\"mention hashtag\" rel=\"tag\">#<span>Refactoring</span></a> <a href=\"https://mastodon.social/tags/UnitTests\" class=\"mention hashtag\" rel=\"tag\">#<span>UnitTests</span></a></p>" }, "attachment": [ { "type": "Document", "mediaType": "image/jpeg", "url": "https://files.mastodon.social/media_attachments/files/114/676/903/566/566/942/original/de8406ac181f365b.jpeg", "name": null, "blurhash": "UhLz1JD?f9t5j[a#azj@0N$_jYWCs+jYf6j[", "width": 480, "height": 360 } ], "tag": [ { "type": "Hashtag", "href": "https://mastodon.social/tags/csudberyrecordings", "name": "#csudberyrecordings" }, { "type": "Hashtag", "href": "https://mastodon.social/tags/codecoverage", "name": "#codecoverage" }, { "type": "Hashtag", "href": "https://mastodon.social/tags/mutationtesting", "name": "#mutationtesting" }, { "type": "Hashtag", "href": "https://mastodon.social/tags/GildedRose", "name": "#GildedRose" }, { "type": "Hashtag", "href": "https://mastodon.social/tags/refactoring", "name": "#refactoring" }, { "type": "Hashtag", "href": "https://mastodon.social/tags/unittests", "name": "#unittests" } ], "replies": { "id": "https://mastodon.social/users/claresudbery/statuses/114676903679014503/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://mastodon.social/users/claresudbery/statuses/114676903679014503/replies?only_other_accounts=true&page=true", "partOf": "https://mastodon.social/users/claresudbery/statuses/114676903679014503/replies", "items": [] } }, "likes": { "id": "https://mastodon.social/users/claresudbery/statuses/114676903679014503/likes", "type": "Collection", "totalItems": 1 }, "shares": { "id": "https://mastodon.social/users/claresudbery/statuses/114676903679014503/shares", "type": "Collection", "totalItems": 3 } }