Recommended Media Attachment Format¶
The first three example are our recommendation on how to format image, video, and audio media attachments. Further properties are possible, and might make it into this recommendation at one point. Examples:
- Focal point and blurhash, see Mastodon
- fps (frames per second) for videos
The final example cannot be recommended yet as it is not widely supported. However, it illustrates how one can provide multiple versions of the media attachments. A high quality and low quality video in this case. The low quality video is enough for most use cases, and is 40 times smaller.
The recommended format is documented in FEP-1311: Media Attachments.
Examples¶
Example 1¶
activity
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"type": "Create",
"actor": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/activity/tuwSDwbT3gY",
"published": "2025-08-30T17:35:40Z",
"object": {
"type": "Note",
"attributedTo": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/object/jFw8TzIoScQ",
"published": "2025-08-30T17:35:40Z",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"content": "Recommended Image Format",
"attachment": [
{
"type": "Image",
"name": "A beautiful cow",
"url": "http://pasture-one-actor/assets/cow.jpg",
"width": 100,
"height": 162,
"mediaType": "image/jpeg",
"digestMultibase": "zQmaeDPzhNL32WQZnnzB1H6QJWvvFNEHdViDB71yrxyXU1t",
"size": 9045
}
]
}
}
mitra
{
"id": "0198fc0c-9a2f-c468-9581-3ad26f04e25a",
"uri": "http://pasture-one-actor/object/jFw8TzIoScQ",
"url": "http://pasture-one-actor/object/jFw8TzIoScQ",
"created_at": "2025-08-30T17:35:40.000Z",
"edited_at": null,
"account": {
"id": "0198fc0b-d02e-8afc-35ec-e315741d92c7",
"username": "actor",
"acct": "actor@pasture-one-actor",
"actor_id": "http://pasture-one-actor/actor",
"url": "http://pasture-one-actor/actor",
"display_name": "Test Actor",
"created_at": "2025-08-30T17:34:49.389Z",
"note": "",
"avatar": "http://mitra/api/v1/accounts/identicon?input=http://pasture-one-actor/actor",
"header": "http://mitra/api/v1/accounts/identicon",
"locked": false,
"mention_policy": "none",
"bot": false,
"identity_proofs": [],
"payment_options": [],
"fields": [],
"emojis": [],
"followers_count": 0,
"following_count": 0,
"subscribers_count": 0,
"statuses_count": 35,
"source": null,
"role": null,
"authentication_methods": null,
"client_config": null
},
"content": "Recommended Image Format",
"language": null,
"in_reply_to_id": null,
"in_reply_to_account_id": null,
"reblog": null,
"visibility": "public",
"sensitive": false,
"spoiler_text": "",
"pinned": false,
"replies_count": 0,
"favourites_count": 0,
"reblogs_count": 0,
"poll": null,
"media_attachments": [
{
"id": "0198fc0c-9a29-11a9-3d8a-a5a7eee2bf75",
"type": "image",
"url": "http://mitra/media/6e403ee33c2817a06af46b6e362c054aec3b43057ff32d2f7ac7761761e6e1ff.jpg",
"preview_url": "http://mitra/media/6e403ee33c2817a06af46b6e362c054aec3b43057ff32d2f7ac7761761e6e1ff.jpg",
"description": "A beautiful cow"
}
],
"quote": null,
"mentions": [
{
"id": "0198fc0a-6f0d-ee21-7099-2614ad913244",
"username": "admin",
"acct": "admin",
"url": "http://mitra/users/admin"
}
],
"tags": [],
"emojis": [],
"favourited": false,
"reblogged": false,
"bookmarked": false,
"pleroma": {
"emoji_reactions": [],
"in_reply_to_account_acct": null,
"parent_visible": true,
"quote": null,
"quote_visible": true
},
"hidden": false,
"ipfs_cid": null,
"links": []
}
Example 2¶
activity
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"type": "Create",
"actor": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/activity/Qxh4TzX0Qro",
"published": "2025-08-30T17:35:41Z",
"object": {
"type": "Note",
"attributedTo": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/object/s5p84BufMig",
"published": "2025-08-30T17:35:41Z",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"content": "Recommended Video Attachment",
"attachment": [
{
"type": "Video",
"url": "http://pasture-one-actor/assets/cow_eating.mp4",
"name": "A beautiful cow eating",
"width": 256,
"height": 144,
"mediaType": "video/mp4",
"digestMultibase": "zQmSzK5qEe5tpjwGMhmjx9RvVoPkWhEmCwxP2s7wPMpKMoK",
"size": 54373,
"duration": "PT3S"
}
]
}
}
mitra
{
"id": "0198fc0c-a00e-a25a-e810-c288d9a6c7dc",
"uri": "http://pasture-one-actor/object/s5p84BufMig",
"url": "http://pasture-one-actor/object/s5p84BufMig",
"created_at": "2025-08-30T17:35:41.000Z",
"edited_at": null,
"account": {
"id": "0198fc0b-d02e-8afc-35ec-e315741d92c7",
"username": "actor",
"acct": "actor@pasture-one-actor",
"actor_id": "http://pasture-one-actor/actor",
"url": "http://pasture-one-actor/actor",
"display_name": "Test Actor",
"created_at": "2025-08-30T17:34:49.389Z",
"note": "",
"avatar": "http://mitra/api/v1/accounts/identicon?input=http://pasture-one-actor/actor",
"header": "http://mitra/api/v1/accounts/identicon",
"locked": false,
"mention_policy": "none",
"bot": false,
"identity_proofs": [],
"payment_options": [],
"fields": [],
"emojis": [],
"followers_count": 0,
"following_count": 0,
"subscribers_count": 0,
"statuses_count": 36,
"source": null,
"role": null,
"authentication_methods": null,
"client_config": null
},
"content": "Recommended Video Attachment",
"language": null,
"in_reply_to_id": null,
"in_reply_to_account_id": null,
"reblog": null,
"visibility": "public",
"sensitive": false,
"spoiler_text": "",
"pinned": false,
"replies_count": 0,
"favourites_count": 0,
"reblogs_count": 0,
"poll": null,
"media_attachments": [
{
"id": "0198fc0c-a006-76ed-b73f-ef52554507b7",
"type": "video",
"url": "http://mitra/media/4514a0bf67069eb36444ace0c4d5d6d4b95be4f01490e6a22ada67bbc3967d0e.mp4",
"preview_url": "http://mitra/media/4514a0bf67069eb36444ace0c4d5d6d4b95be4f01490e6a22ada67bbc3967d0e.mp4",
"description": "A beautiful cow eating"
}
],
"quote": null,
"mentions": [
{
"id": "0198fc0a-6f0d-ee21-7099-2614ad913244",
"username": "admin",
"acct": "admin",
"url": "http://mitra/users/admin"
}
],
"tags": [],
"emojis": [],
"favourited": false,
"reblogged": false,
"bookmarked": false,
"pleroma": {
"emoji_reactions": [],
"in_reply_to_account_acct": null,
"parent_visible": true,
"quote": null,
"quote_visible": true
},
"hidden": false,
"ipfs_cid": null,
"links": []
}
Example 3¶
activity
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"type": "Create",
"actor": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/activity/vDsvmaPHL7M",
"published": "2025-08-30T17:35:43Z",
"object": {
"type": "Note",
"attributedTo": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/object/Da5SEv3sN4M",
"published": "2025-08-30T17:35:43Z",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"content": "Recommended Audio Format",
"attachment": [
{
"type": "Audio",
"url": "http://pasture-one-actor/assets/cow_moo.mp3",
"name": "A cow mooing",
"mediaType": "audio/mpeg",
"digestMultibase": "zQmSXTyLCPqoiGoUUwKRMKgFdddaAUkvQNr29nhB6tahb9Z",
"size": 67709,
"duration": "PT2.1S"
}
]
}
}
mitra
{
"id": "0198fc0c-a5e3-ce44-5e54-f7dc4ea6deff",
"uri": "http://pasture-one-actor/object/Da5SEv3sN4M",
"url": "http://pasture-one-actor/object/Da5SEv3sN4M",
"created_at": "2025-08-30T17:35:43.000Z",
"edited_at": null,
"account": {
"id": "0198fc0b-d02e-8afc-35ec-e315741d92c7",
"username": "actor",
"acct": "actor@pasture-one-actor",
"actor_id": "http://pasture-one-actor/actor",
"url": "http://pasture-one-actor/actor",
"display_name": "Test Actor",
"created_at": "2025-08-30T17:34:49.389Z",
"note": "",
"avatar": "http://mitra/api/v1/accounts/identicon?input=http://pasture-one-actor/actor",
"header": "http://mitra/api/v1/accounts/identicon",
"locked": false,
"mention_policy": "none",
"bot": false,
"identity_proofs": [],
"payment_options": [],
"fields": [],
"emojis": [],
"followers_count": 0,
"following_count": 0,
"subscribers_count": 0,
"statuses_count": 37,
"source": null,
"role": null,
"authentication_methods": null,
"client_config": null
},
"content": "Recommended Audio Format",
"language": null,
"in_reply_to_id": null,
"in_reply_to_account_id": null,
"reblog": null,
"visibility": "public",
"sensitive": false,
"spoiler_text": "",
"pinned": false,
"replies_count": 0,
"favourites_count": 0,
"reblogs_count": 0,
"poll": null,
"media_attachments": [
{
"id": "0198fc0c-a5dd-4af9-4325-5c6f46fb4356",
"type": "audio",
"url": "http://mitra/media/3e33fee4c40cdc62e2744d8cf9b7b65b97e0af17e81170b067a1b8fe49b88f28.m2a",
"preview_url": "http://mitra/media/3e33fee4c40cdc62e2744d8cf9b7b65b97e0af17e81170b067a1b8fe49b88f28.m2a",
"description": "A cow mooing"
}
],
"quote": null,
"mentions": [
{
"id": "0198fc0a-6f0d-ee21-7099-2614ad913244",
"username": "admin",
"acct": "admin",
"url": "http://mitra/users/admin"
}
],
"tags": [],
"emojis": [],
"favourited": false,
"reblogged": false,
"bookmarked": false,
"pleroma": {
"emoji_reactions": [],
"in_reply_to_account_acct": null,
"parent_visible": true,
"quote": null,
"quote_visible": true
},
"hidden": false,
"ipfs_cid": null,
"links": []
}
Example 4¶
activity
{
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"type": "Create",
"actor": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/activity/d9MDOReoBuA",
"published": "2025-08-30T17:35:44Z",
"object": {
"type": "Note",
"attributedTo": "http://pasture-one-actor/actor",
"to": [
"https://www.w3.org/ns/activitystreams#Public",
"http://mitra/users/admin"
],
"id": "http://pasture-one-actor/object/qkbT7tFNhEQ",
"published": "2025-08-30T17:35:44Z",
"@context": [
"https://www.w3.org/ns/activitystreams",
"https://www.w3.org/ns/credentials/v2",
{
"size": "https://joinpeertube.org/ns#size"
}
],
"content": "Multiple formats for video",
"attachment": [
{
"type": "Video",
"name": "A beautiful cow eating",
"url": [
{
"type": "Link",
"size": 54373,
"digest": "zQmSzK5qEe5tpjwGMhmjx9RvVoPkWhEmCwxP2s7wPMpKMoK",
"width": 256,
"height": 144,
"href": "http://pasture-one-actor/assets/cow_eating.mp4",
"mediaType": "video/mp4"
},
{
"type": "Link",
"size": 2271723,
"digest": "zQme2X4rgWuRdmAtGGMSEbdoeRQ2NAL2VptcdRGTYDZbSKG",
"width": 1920,
"height": 1080,
"href": "http://pasture-one-actor/assets/cow_eating_hd.mp4",
"mediaType": "video/mp4"
}
],
"duration": "PT3S"
}
]
}
}
mitra
{
"id": "0198fc0c-ab9d-37bf-03b1-89c8e40621eb",
"uri": "http://pasture-one-actor/object/qkbT7tFNhEQ",
"url": "http://pasture-one-actor/object/qkbT7tFNhEQ",
"created_at": "2025-08-30T17:35:44.000Z",
"edited_at": null,
"account": {
"id": "0198fc0b-d02e-8afc-35ec-e315741d92c7",
"username": "actor",
"acct": "actor@pasture-one-actor",
"actor_id": "http://pasture-one-actor/actor",
"url": "http://pasture-one-actor/actor",
"display_name": "Test Actor",
"created_at": "2025-08-30T17:34:49.389Z",
"note": "",
"avatar": "http://mitra/api/v1/accounts/identicon?input=http://pasture-one-actor/actor",
"header": "http://mitra/api/v1/accounts/identicon",
"locked": false,
"mention_policy": "none",
"bot": false,
"identity_proofs": [],
"payment_options": [],
"fields": [],
"emojis": [],
"followers_count": 0,
"following_count": 0,
"subscribers_count": 0,
"statuses_count": 38,
"source": null,
"role": null,
"authentication_methods": null,
"client_config": null
},
"content": "Multiple formats for video",
"language": null,
"in_reply_to_id": null,
"in_reply_to_account_id": null,
"reblog": null,
"visibility": "public",
"sensitive": false,
"spoiler_text": "",
"pinned": false,
"replies_count": 0,
"favourites_count": 0,
"reblogs_count": 0,
"poll": null,
"media_attachments": [],
"quote": null,
"mentions": [
{
"id": "0198fc0a-6f0d-ee21-7099-2614ad913244",
"username": "admin",
"acct": "admin",
"url": "http://mitra/users/admin"
}
],
"tags": [],
"emojis": [],
"favourited": false,
"reblogged": false,
"bookmarked": false,
"pleroma": {
"emoji_reactions": [],
"in_reply_to_account_acct": null,
"parent_visible": true,
"quote": null,
"quote_visible": true
},
"hidden": false,
"ipfs_cid": null,
"links": []
}