> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Social Media Image & Video Requirements

> Reference image and video requirements for Bluesky, Facebook, Google Business Profile, Instagram, LinkedIn, Pinterest, Reddit, Telegram, TikTok, X & YouTube.

## Image and Video Posting Requirements

When publishing a post to the social networks, it is important to follow each network's requirements.
By following these guidelines, you can ensure your post is accepted by the social networks and reaches the intended audience.

Please see the [post](/docs/apis/post/post) endpoint for additional details.

### Accepted File Types

Files have an accepted file ending type (extension), such as jpg, jpeg, png,
webp, gif, mp4, mov, or avi, with content-types such as image/jpeg or video/mp4.

Additionally, LinkedIn accepts file types with the following extensions: ppt,
pptx, doc, docx, and pdf.

If the media URL has special characters, e.g. ñ, please encode the special characters before sending.

Please see below for details on each network.

<Info>
  **Automatic image format conversion.** WebP, HEIC, HEIF, and AVIF source images are automatically converted to JPEG before posting to platforms that don't accept them natively. WebP is converted for Instagram, LinkedIn, TikTok, Google My Business, Threads, and Snapchat; HEIC, HEIF, and AVIF are converted across all supported platforms. Conversion runs transparently at send time, so you can submit any of these formats via `mediaUrls` and Ayrshare will handle the format on the destination platform's behalf. The per-platform "supported formats" lists below describe what each network ultimately accepts on the wire; you do not need to convert beforehand. See [Image Format Conversion Errors](/docs/errors/errors-ayrshare#image-format-conversion-errors) for the failure modes (codes 450, 451, 452), and [Image Metadata and Content Credentials](/docs/media-guidelines/overview#image-metadata-and-content-credentials) for what happens to embedded metadata when an image is converted.
</Info>

### **Maximum Images**

Max images accepted per platform in a single post:

<ul class="custom-bullets">
  <li>Bluesky: 4 images.</li>

  <li>
    Facebook Pages: 10 images, including a [carousel
    post](/docs/apis/post/social-networks/facebook#carousel-images).
  </li>

  <li>Instagram: 10 images.</li>
  <li>Google Business Profile: 1 image.</li>
  <li>LinkedIn: 9 images.</li>
  <li>Pinterest: 1 image.</li>
  <li>Reddit: 1 image.</li>
  <li>Telegram: 1 image.</li>
  <li>Threads: 20 images.</li>
  <li>TikTok: 35 images.</li>
  <li>X/Twitter: 4 images.</li>
</ul>

### **Maximum Videos**

Only ***one*** video is allowed per post for Bluesky, Facebook, Instagram, LinkedIn, Pinterest, Telegram, Threads, TikTok, X/Twitter, and YouTube. Reddit does not yet support videos.

<Warning>
  Please be sure your video URL ends in an accepted video extension such as .mp4 or .mov, depending upon the network.

  For example:

  <ul class="custom-bullets">
    <li>Accepted: `https://mysite.com/video.mp4`</li>
    <li>Not Accepted: `https://mysite.com/video.mp4?code=30s93`</li>
  </ul>

  If your video is a signed URL or cannot end in an accepted video extension, you can use the [`isVideo`](/docs/apis/post/overview#video-extension) parameter when publishing the post.
</Warning>

We recommend for larger video files over 50 MB create a scheduled post with the `scheduleDate` parameter for async processing.

Be sure to also check the upload speed of your media URLs to prevent timeouts at the social networks.
If the media file cannot be downloaded within approximately 5 minutes a time out will likely occur.

### Standard Social Video Requirements

Each social network has different video requirements. If you want a video that can be published to social networks such as X/Twitter, Instagram, Facebook, and TikTok use the following standards:

**Dimensions:** 1080 x 1920 px

**Length:** 60 seconds

**Size:** 50 MB

**Format:** MP4

**Example Portrait Video:** `https://img.ayrshare.com/random/portrait5.mp4`

You may also create specific sized video for networks such as YouTube that accept longer and larger files. Please see below for details of each network.

See how to [create random videos](/docs/quickstart#random-image) for your testing.

### Content Type

**When posting,** be sure the `content-type` is set appropriately, e.g. image/png, image/jpg, or image/jpeg.

### Secure URLs

When posting your own media URL, the link must be secure by using SSL and starting with `https://`

### Social Network Media Requirements

<CardGroup cols={2}>
  <Card title="Bluesky Media Requirements" icon="bluesky" iconType="duotone" href="/docs/media-guidelines/bluesky" />

  <Card title="Facebook Media Requirements" icon="facebook" iconType="duotone" href="/docs/media-guidelines/facebook_pages" />

  <Card title="Google Business Profile Media Requirements" icon="google" iconType="duotone" href="/docs/media-guidelines/google_business_profile" />

  <Card title="Instagram Media Requirements" icon="instagram" iconType="duotone" href="/docs/media-guidelines/instagram" />

  <Card title="LinkedIn Media Requirements" icon="linkedin" iconType="duotone" href="/docs/media-guidelines/linkedin" />

  <Card title="Pinterest Media Requirements" icon="pinterest" iconType="duotone" href="/docs/media-guidelines/pinterest" />

  <Card title="Reddit Media Requirements" icon="reddit" iconType="duotone" href="/docs/media-guidelines/reddit" />

  <Card title="Snapchat Media Requirements" icon="snapchat" iconType="duotone" href="/docs/media-guidelines/snapchat" />

  <Card title="Telegram Media Requirements" icon="telegram" iconType="duotone" href="/docs/media-guidelines/telegram" />

  <Card title="Threads Media Requirements" icon="threads" iconType="duotone" href="/docs/media-guidelines/threads" />

  <Card title="TikTok Media Requirements" icon="tiktok" iconType="duotone" href="/docs/media-guidelines/tiktok" />

  <Card title="X/Twitter Media Requirements" icon="x-twitter" iconType="duotone" href="/docs/media-guidelines/x_twitter" />

  <Card title="YouTube Media Requirements" icon="youtube" iconType="duotone" href="/docs/media-guidelines/youtube" />
</CardGroup>

## Image Metadata and Content Credentials

Images frequently carry embedded metadata: an ICC color profile, an XMP packet, EXIF camera data, or a [C2PA](https://c2pa.org/) Content Credentials manifest.
When an image is generated or edited with an AI tool, the AI disclosure normally lives in the XMP packet as the `Iptc4xmpExt:DigitalSourceType` property, and often inside a C2PA manifest as well.

Ayrshare re-encodes an image to JPEG when the destination network won't accept the source format, as described under [Accepted File Types](/docs/media-guidelines/overview#accepted-file-types) above.
A re-encode rewrites the file, so this section states exactly what Ayrshare carries across, what it drops, and what each network does with the result.
Videos are never re-encoded and their metadata is untouched.

### Metadata Retained on Conversion

<ul class="custom-bullets">
  <li>
    **Color rendering.** A wide-gamut image looks the same after conversion as it did before. How
    that is achieved depends on the source format, and the difference is worth knowing if you
    inspect the converted file. A **HEIC or HEIF** image keeps its original ICC color profile, which
    is carried into the JPEG. A **WebP or AVIF** image is converted to standard sRGB instead, so the
    colors are correct even on a network that discards embedded profiles — the converted JPEG
    carries no ICC profile because it no longer needs one.
  </li>

  <li>
    **The AI disclosure, and only the AI disclosure.** Ayrshare writes a small, new XMP packet
    containing `Iptc4xmpExt:DigitalSourceType` — the IPTC property that records whether an image was
    captured by a camera, edited, or produced by an algorithm — so a disclosure written by your
    generation tool reaches the network. The packet is **built fresh rather than copied**: nothing
    else from your image's original XMP travels with it. Creator and copyright fields, keywords,
    editing history and location fields such as `photoshop:City` and `Iptc4xmpExt:LocationCreated`
    are all left behind, so nothing about you or where a photo was taken can be published by
    accident. See [Metadata Not
    Retained](/docs/media-guidelines/overview#metadata-not-retained) below.
  </li>

  <li>
    **A synthesized AI disclosure.** If a C2PA manifest asserts an AI origin but the XMP packet
    doesn't record it, Ayrshare writes the equivalent `Iptc4xmpExt:DigitalSourceType` value into the
    output XMP, so the disclosure isn't lost along with the manifest. Ayrshare never infers an AI
    origin on its own: the value is carried across when the image already carries one, and
    synthesized only when a C2PA manifest asserts it. An AI-generated image that arrives with no
    disclosure in either place is published without one.
  </li>
</ul>

### Metadata Not Retained

<ul class="custom-bullets">
  <li>
    **Everything except the AI disclosure.** A converted image carries no EXIF block at all — no GPS
    coordinates, no camera make, model or capture time — and nothing from the original XMP packet
    beyond the disclosure itself. That includes `dc:creator` and `dc:rights`, keywords, editing
    history, and every location field, `exif:GPS*` and authored text such as `photoshop:City` and
    `Iptc4xmpExt:LocationCreated` alike. The output packet is built from scratch rather than filtered,
    so the only thing that can appear in it is the disclosure. If you need authorship or copyright
    metadata to reach a network, publish in a format that network accepts natively so no conversion
    takes place.
  </li>

  <li>
    **A very long disclosure value.** The packet Ayrshare writes has to fit a fixed amount of space in
    the JPEG, and a disclosure value long enough to push it past 60,000 bytes is left out rather than
    truncated. Real IPTC values are a few dozen bytes, so this does not happen in practice; it is
    documented because the post still succeeds and no warning is returned. Note this is a limit on the
    *disclosure*, not on your image's original packet — a large original XMP no longer costs you the
    disclosure, because the original is not what gets written.
  </li>

  <li>
    **The C2PA cryptographic signature can't survive a re-encode.** A C2PA manifest is signed over
    the exact bytes of the file it was attached to. Converting the image to JPEG produces different
    bytes, so the signature can no longer be valid and is not carried over. The *disclosure* survives
    the conversion; the *signature* does not. A converted image will not verify as signed content in
    a Content Credentials validator.
  </li>
</ul>

<Warning>
  Don't rely on a converted image to prove authorship or tamper-evidence. If a verifiable C2PA
  signature is a requirement, publish the image in a format the destination network accepts natively
  so that no conversion takes place.
</Warning>

### When Conversion Happens

<ul class="custom-bullets">
  <li>
    **JPEG and PNG pass through untouched.** No re-encode and no metadata change — the bytes you
    supply are the bytes the network receives.
  </li>

  <li>
    **WebP** is converted to JPEG for Instagram, Threads, LinkedIn, TikTok, Google Business Profile,
    and Snapchat.
  </li>

  <li>**HEIC, HEIF, and AVIF** are converted to JPEG for every network.</li>
  <li>**Videos** are never converted.</li>
</ul>

If you need certainty that no re-encode will happen, supply JPEG or PNG.

### What Each Network Does With the Metadata

Retaining the metadata is only half the journey. Each network decides independently whether to keep it on ingest and whether to render an AI label.
The results below come from live posts published in August 2026 with no platform AI flag set, so the embedded metadata was the only possible signal:

| Network   | AI disclosure kept                        | ICC color profile kept | AI label rendered           |
| --------- | ----------------------------------------- | ---------------------- | --------------------------- |
| Facebook  | Yes                                       | Yes                    | Yes — shown as "AI content" |
| Instagram | Yes                                       | No — stripped          | Yes — shown as "AI info"    |
| Threads   | Yes                                       | Not measured           | No label is rendered today  |
| LinkedIn  | No — image metadata is stripped on ingest | No — stripped          | No                          |

Meta keeps the disclosure consistently across Facebook, Instagram, and Threads, but renders the label per surface: Facebook and Instagram show it, Threads currently does not.

The two columns are independent, and Instagram is the reason it's worth saying so: it keeps the AI disclosure while discarding the color profile. That's also why WebP and AVIF images are converted to standard sRGB instead of being given a profile to carry — a profile only helps on a network that keeps it, whereas correct sRGB color is correct everywhere.

<Warning>
  **Provenance metadata does not survive LinkedIn's image processing.** LinkedIn removes embedded
  metadata when it ingests an image, so the `Iptc4xmpExt:DigitalSourceType` disclosure is not present
  on the published image and no AI label is applied. Don't treat embedded metadata as an
  AI-disclosure mechanism for LinkedIn.
</Warning>

Networks not listed above were not measured. Network behavior can change without notice, so treat the table as observed behavior rather than a guarantee.

<Warning>
  **Instagram `autoResize` discards the disclosure.** When a post uses
  [`instagramOptions.autoResize`](/docs/apis/post/social-networks/instagram#auto-image-resize), the image is resized to
  1080×1080 by a separate step that writes a new file and carries no metadata forward — so the AI
  disclosure, the ICC profile and any C2PA manifest are all absent from the image Instagram receives,
  regardless of what the source carried. If the disclosure needs to reach Instagram, supply an image
  that already meets Instagram's aspect-ratio requirements and leave `autoResize` off.
</Warning>

### Uploading Media Directly

[`POST /media/upload`](/docs/apis/media/upload-media) stores your bytes verbatim.
Nothing is re-encoded and all metadata — including EXIF and any C2PA manifest — is stored exactly as supplied.
The retention behavior above applies only when an image is published to a network that requires a different format.
