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://fantastic.earth/users/abnv/collections/featured", "type": "OrderedCollection", "totalItems": 2, "orderedItems": [ { "id": "https://fantastic.earth/users/abnv/statuses/112542142040173291", "type": "Note", "summary": null, "inReplyTo": null, "published": "2024-06-01T15:46:46Z", "url": "https://fantastic.earth/@abnv/112542142040173291", "attributedTo": "https://fantastic.earth/users/abnv", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://fantastic.earth/users/abnv/followers" ], "sensitive": false, "atomUri": "https://fantastic.earth/users/abnv/statuses/112542142040173291", "inReplyToAtomUri": null, "conversation": "tag:fantastic.earth,2024-06-01:objectId=11629494:objectType=Conversation", "content": "<p>JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for <a href=\"https://fantastic.earth/tags/JSON\" class=\"mention hashtag\" rel=\"tag\">#<span>JSON</span></a> is a great exercise for learning the basics of parsing.</p><p>That&#39;s exactly what I did: I wrote a JSON parser from scratch in <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a>. Read my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> post to learn about basics of <a href=\"https://fantastic.earth/tags/parsing\" class=\"mention hashtag\" rel=\"tag\">#<span>parsing</span></a>, nuances of the JSON syntax, and parser combinators and property-based testing in Haskell: <a href=\"https://abhinavsarkar.net/posts/json-parsing-from-scratch-in-haskell/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/json-p</span><span class=\"invisible\">arsing-from-scratch-in-haskell/</span></a></p><p><a href=\"https://fantastic.earth/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://fantastic.earth/tags/functionalprogramming\" class=\"mention hashtag\" rel=\"tag\">#<span>functionalprogramming</span></a></p>", "contentMap": { "en": "<p>JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for <a href=\"https://fantastic.earth/tags/JSON\" class=\"mention hashtag\" rel=\"tag\">#<span>JSON</span></a> is a great exercise for learning the basics of parsing.</p><p>That&#39;s exactly what I did: I wrote a JSON parser from scratch in <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a>. Read my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> post to learn about basics of <a href=\"https://fantastic.earth/tags/parsing\" class=\"mention hashtag\" rel=\"tag\">#<span>parsing</span></a>, nuances of the JSON syntax, and parser combinators and property-based testing in Haskell: <a href=\"https://abhinavsarkar.net/posts/json-parsing-from-scratch-in-haskell/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/json-p</span><span class=\"invisible\">arsing-from-scratch-in-haskell/</span></a></p><p><a href=\"https://fantastic.earth/tags/programming\" class=\"mention hashtag\" rel=\"tag\">#<span>programming</span></a> <a href=\"https://fantastic.earth/tags/functionalprogramming\" class=\"mention hashtag\" rel=\"tag\">#<span>functionalprogramming</span></a></p>" }, "attachment": [ { "type": "Document", "mediaType": "image/png", "url": "https://fantastic.earth/system/media_attachments/files/112/542/141/834/983/206/original/5d056cd79164e22a.png", "name": "A transition diagram depicting the JSON syntax.", "blurhash": "U6Ss50t7~qt7IUfQRjayIUfQRjfQM{fQRjay", "width": 1018, "height": 874 } ], "tag": [ { "type": "Hashtag", "href": "https://fantastic.earth/tags/json", "name": "#json" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/haskell", "name": "#haskell" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/blog", "name": "#blog" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/parsing", "name": "#parsing" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/programming", "name": "#programming" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/functionalprogramming", "name": "#functionalprogramming" } ], "replies": { "id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies?only_other_accounts=true&page=true", "partOf": "https://fantastic.earth/users/abnv/statuses/112542142040173291/replies", "items": [] } }, "likes": { "id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/likes", "type": "Collection", "totalItems": 30 }, "shares": { "id": "https://fantastic.earth/users/abnv/statuses/112542142040173291/shares", "type": "Collection", "totalItems": 25 } }, { "id": "https://fantastic.earth/users/abnv/statuses/110481168853488318", "type": "Note", "summary": null, "inReplyTo": null, "published": "2023-06-03T16:14:10Z", "url": "https://fantastic.earth/@abnv/110481168853488318", "attributedTo": "https://fantastic.earth/users/abnv", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://fantastic.earth/users/abnv/followers" ], "sensitive": false, "atomUri": "https://fantastic.earth/users/abnv/statuses/110481168853488318", "inReplyToAtomUri": null, "conversation": "tag:fantastic.earth,2023-06-03:objectId=3396524:objectType=Conversation", "content": "<p>I wrote the fourth part of my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> series “Implementing Co, a small programming language with coroutines”. And this time, we add support for channels in Co for inter-coroutine communication. <a href=\"https://abhinavsarkar.net/posts/implementing-co-4/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/implem</span><span class=\"invisible\">enting-co-4/</span></a></p><p><a href=\"https://fantastic.earth/tags/Programming\" class=\"mention hashtag\" rel=\"tag\">#<span>Programming</span></a> <a href=\"https://fantastic.earth/tags/PLT\" class=\"mention hashtag\" rel=\"tag\">#<span>PLT</span></a> <a href=\"https://fantastic.earth/tags/ProgramingLanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>ProgramingLanguages</span></a> <a href=\"https://fantastic.earth/tags/Compilers\" class=\"mention hashtag\" rel=\"tag\">#<span>Compilers</span></a> <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a> <a href=\"https://fantastic.earth/tags/concurrency\" class=\"mention hashtag\" rel=\"tag\">#<span>concurrency</span></a></p>", "contentMap": { "en": "<p>I wrote the fourth part of my <a href=\"https://fantastic.earth/tags/blog\" class=\"mention hashtag\" rel=\"tag\">#<span>blog</span></a> series “Implementing Co, a small programming language with coroutines”. And this time, we add support for channels in Co for inter-coroutine communication. <a href=\"https://abhinavsarkar.net/posts/implementing-co-4/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">abhinavsarkar.net/posts/implem</span><span class=\"invisible\">enting-co-4/</span></a></p><p><a href=\"https://fantastic.earth/tags/Programming\" class=\"mention hashtag\" rel=\"tag\">#<span>Programming</span></a> <a href=\"https://fantastic.earth/tags/PLT\" class=\"mention hashtag\" rel=\"tag\">#<span>PLT</span></a> <a href=\"https://fantastic.earth/tags/ProgramingLanguages\" class=\"mention hashtag\" rel=\"tag\">#<span>ProgramingLanguages</span></a> <a href=\"https://fantastic.earth/tags/Compilers\" class=\"mention hashtag\" rel=\"tag\">#<span>Compilers</span></a> <a href=\"https://fantastic.earth/tags/Haskell\" class=\"mention hashtag\" rel=\"tag\">#<span>Haskell</span></a> <a href=\"https://fantastic.earth/tags/concurrency\" class=\"mention hashtag\" rel=\"tag\">#<span>concurrency</span></a></p>" }, "attachment": [], "tag": [ { "type": "Hashtag", "href": "https://fantastic.earth/tags/blog", "name": "#blog" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/programming", "name": "#programming" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/plt", "name": "#plt" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/programinglanguages", "name": "#programinglanguages" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/compilers", "name": "#compilers" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/haskell", "name": "#haskell" }, { "type": "Hashtag", "href": "https://fantastic.earth/tags/concurrency", "name": "#concurrency" } ], "replies": { "id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies?only_other_accounts=true&page=true", "partOf": "https://fantastic.earth/users/abnv/statuses/110481168853488318/replies", "items": [] } }, "likes": { "id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/likes", "type": "Collection", "totalItems": 42 }, "shares": { "id": "https://fantastic.earth/users/abnv/statuses/110481168853488318/shares", "type": "Collection", "totalItems": 25 } } ] }