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",
"Hashtag": "as:Hashtag"
}
],
"id": "https://floss.social/users/andrija/statuses/114655834242728375",
"type": "Note",
"summary": null,
"inReplyTo": null,
"published": "2025-06-09T22:46:29Z",
"url": "https://floss.social/@andrija/114655834242728375",
"attributedTo": "https://floss.social/users/andrija",
"to": [
"https://www.w3.org/ns/activitystreams#Public"
],
"cc": [
"https://floss.social/users/andrija/followers"
],
"sensitive": false,
"atomUri": "https://floss.social/users/andrija/statuses/114655834242728375",
"inReplyToAtomUri": null,
"conversation": "tag:floss.social,2025-06-09:objectId=89785568:objectType=Conversation",
"content": "<p>Once you start using optional chaining and really think about it, you should see that</p><p>if (user && user.profile && user.profile.avatar) {<br /> console.log(user.profile.avatar);<br />}</p><p>is actually more reliable than</p><p>console.log(user?.profile?.avatar);</p><p>because the first approach has the "if" that allows for "else" - in a logical sense.</p><p>The compactness of optional chaining does not make it more reliable.</p><p><a href=\"https://allthingssmitty.com/2025/06/02/write-more-reliable-javascript-with-optional-chaining/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">allthingssmitty.com/2025/06/02</span><span class=\"invisible\">/write-more-reliable-javascript-with-optional-chaining/</span></a></p><p><a href=\"https://floss.social/tags/javascript\" class=\"mention hashtag\" rel=\"tag\">#<span>javascript</span></a></p>",
"contentMap": {
"en": "<p>Once you start using optional chaining and really think about it, you should see that</p><p>if (user && user.profile && user.profile.avatar) {<br /> console.log(user.profile.avatar);<br />}</p><p>is actually more reliable than</p><p>console.log(user?.profile?.avatar);</p><p>because the first approach has the "if" that allows for "else" - in a logical sense.</p><p>The compactness of optional chaining does not make it more reliable.</p><p><a href=\"https://allthingssmitty.com/2025/06/02/write-more-reliable-javascript-with-optional-chaining/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">allthingssmitty.com/2025/06/02</span><span class=\"invisible\">/write-more-reliable-javascript-with-optional-chaining/</span></a></p><p><a href=\"https://floss.social/tags/javascript\" class=\"mention hashtag\" rel=\"tag\">#<span>javascript</span></a></p>"
},
"attachment": [],
"tag": [
{
"type": "Hashtag",
"href": "https://floss.social/tags/JavaScript",
"name": "#JavaScript"
}
],
"replies": {
"id": "https://floss.social/users/andrija/statuses/114655834242728375/replies",
"type": "Collection",
"first": {
"type": "CollectionPage",
"next": "https://floss.social/users/andrija/statuses/114655834242728375/replies?only_other_accounts=true&page=true",
"partOf": "https://floss.social/users/andrija/statuses/114655834242728375/replies",
"items": []
}
},
"likes": {
"id": "https://floss.social/users/andrija/statuses/114655834242728375/likes",
"type": "Collection",
"totalItems": 2
},
"shares": {
"id": "https://floss.social/users/andrija/statuses/114655834242728375/shares",
"type": "Collection",
"totalItems": 3
}
}