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://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": []
}
}
}