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://martianbase.net/users/mackuba/statuses/114562936783322722", "type": "Note", "summary": null, "inReplyTo": null, "published": "2025-05-24T13:01:26Z", "url": "https://martianbase.net/@mackuba/114562936783322722", "attributedTo": "https://martianbase.net/users/mackuba", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://martianbase.net/users/mackuba/followers" ], "sensitive": false, "atomUri": "https://martianbase.net/users/mackuba/statuses/114562936783322722", "inReplyToAtomUri": null, "conversation": "tag:martianbase.net,2025-05-24:objectId=154531:objectType=Conversation", "content": "<p>Yess, my PR to faye-websocket got merged - there will be new release with a breaking change (I suggested an option defaulting to old behavior) to return binary data as strings. This will mean a huge speedup in Skyfall when reading from a CBOR firehose 🚀 <a href=\"https://martianbase.net/tags/atdev\" class=\"mention hashtag\" rel=\"tag\">#<span>atdev</span></a> <a href=\"https://martianbase.net/tags/rubylang\" class=\"mention hashtag\" rel=\"tag\">#<span>rubylang</span></a></p><p><a href=\"https://github.com/faye/websocket-driver-ruby/pull/95\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/faye/websocket-driv</span><span class=\"invisible\">er-ruby/pull/95</span></a></p>", "contentMap": { "en": "<p>Yess, my PR to faye-websocket got merged - there will be new release with a breaking change (I suggested an option defaulting to old behavior) to return binary data as strings. This will mean a huge speedup in Skyfall when reading from a CBOR firehose 🚀 <a href=\"https://martianbase.net/tags/atdev\" class=\"mention hashtag\" rel=\"tag\">#<span>atdev</span></a> <a href=\"https://martianbase.net/tags/rubylang\" class=\"mention hashtag\" rel=\"tag\">#<span>rubylang</span></a></p><p><a href=\"https://github.com/faye/websocket-driver-ruby/pull/95\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">github.com/faye/websocket-driv</span><span class=\"invisible\">er-ruby/pull/95</span></a></p>" }, "attachment": [ { "type": "Document", "mediaType": "image/jpeg", "url": "https://martianbase.net/system/media_attachments/files/114/562/936/765/762/043/original/ab9981f2314c0d64.jpeg", "name": "jcoglan commented 32 minutes ago:\n\nThanks a lot for finding and fixing this. On reflection, is was an ill-advised decision of mine to represent binary data as an array. I thought this would make it easier to distinguish and handle, but as you point out, most things in the Ruby ecosystem that parse binary formats expect the input to be a string, and this is the data type you get when reading from a file or socket. There's really no point allocating an array that you're going to have to convert back again.\n\nWith that in mind, I actually think that emitting a string should be the new default. This may a breaking change, but if we don't do this I think it will be difficult for most users to get the performance benefit. websocket-driver is normally not invoked directly by applications but is buried deep inside other libraries and frameworks, which would need to update their code to take advantage of this. Therefore I think we should emit strings by default, but I've kept your option for reverting to the old behaviour of emitting arrays.\n\nI've also updated the frame() method to treat Encoding::BINARY strings as binary messages, so that code for echo servers or other pass-through logic works correctly.\n\nThis change will ship as version 0.8.0 is it involves a change to the API.", "blurhash": "U8R:KPM{-;%M9Gt7ofWB?wf6M_ay%MRjRjof", "width": 1882, "height": 912 } ], "tag": [ { "type": "Hashtag", "href": "https://martianbase.net/tags/atdev", "name": "#atdev" }, { "type": "Hashtag", "href": "https://martianbase.net/tags/rubylang", "name": "#rubylang" } ], "replies": { "id": "https://martianbase.net/users/mackuba/statuses/114562936783322722/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://martianbase.net/users/mackuba/statuses/114562936783322722/replies?only_other_accounts=true&page=true", "partOf": "https://martianbase.net/users/mackuba/statuses/114562936783322722/replies", "items": [] } } }