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.
{
"@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
}
}