{
 "version": "1.1",
 "measured": "2026-10-22",
 "units": "1080x1920 canvas, seconds of ad playback",
 "margin_px": 25,
 "main_column_x": [
  60,
  930
 ],
 "top_px": 210,
 "method": "Meta Ads Manager Advanced preview, paused draft ad in Riibon's own ad account, grid-and-clock calibration clips (9:16, 4:5, 1:1) with a numbered grid line every 100 px, and a clock-stamped copy of a real vertical clip. Positions +/-25 px, timings +/-0.4 s.",
 "placement_names": {
  "ig_stories": "Instagram Stories",
  "fb_stories": "Facebook Stories",
  "ig_reels": "Instagram Reels",
  "fb_reels": "Facebook Reels",
  "an_native": "Audience Network native"
 },
 "core_placements": [
  "ig_stories",
  "fb_stories",
  "ig_reels",
  "fb_reels"
 ],
 "weights": {
  "ig_stories": 0.25,
  "fb_stories": 0.25,
  "ig_reels": 0.25,
  "fb_reels": 0.25
 },
 "elements": [
  {
   "placement": "ig_stories",
   "label": "Top bar: progress, avatar, name, close",
   "t0": 0,
   "t1": null,
   "box": [
    0,
    0,
    1080,
    150
   ],
   "confidence": "M",
   "note": "Present from the first frame."
  },
  {
   "placement": "ig_stories",
   "label": "CTA pill",
   "t0": 1.0,
   "t1": null,
   "box": [
    130,
    1620,
    940,
    1740
   ],
   "confidence": "E",
   "note": "Present at the first sample (1.2 s) and every sample to 22 s. 0 to 1 s not sampled."
  },
  {
   "placement": "ig_stories",
   "label": "Ad tag",
   "t0": 0,
   "t1": null,
   "box": [
    40,
    1830,
    100,
    1870
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "fb_stories",
   "label": "Top bar: avatar, name, menu, close",
   "t0": 0,
   "t1": null,
   "box": [
    0,
    0,
    1080,
    135
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "fb_stories",
   "label": "Swipe chevron and CTA pill",
   "t0": 1.0,
   "t1": null,
   "box": [
    150,
    1630,
    930,
    1840
   ],
   "confidence": "E",
   "note": "Present at the first sample (1.2 s) and every sample to 22 s."
  },
  {
   "placement": "ig_reels",
   "label": "Top bar: Reels title, camera",
   "t0": 0,
   "t1": null,
   "box": [
    0,
    0,
    1080,
    170
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "ig_reels",
   "label": "Action rail",
   "t0": 0,
   "t1": null,
   "box": [
    930,
    1530,
    1080,
    1920
   ],
   "confidence": "M",
   "note": "Right edge only."
  },
  {
   "placement": "ig_reels",
   "label": "Profile row (before the card)",
   "t0": 0,
   "t1": 10.6,
   "box": [
    45,
    1555,
    935,
    1625
   ],
   "confidence": "E",
   "note": "Sits lower until the card expands."
  },
  {
   "placement": "ig_reels",
   "label": "Caption line",
   "t0": 0,
   "t1": null,
   "box": [
    47,
    1740,
    700,
    1780
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "ig_reels",
   "label": "Ad tag",
   "t0": 0,
   "t1": null,
   "box": [
    45,
    1830,
    110,
    1860
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "ig_reels",
   "label": "Slim CTA bar",
   "t0": 2.5,
   "t1": 10.6,
   "box": [
    47,
    1650,
    870,
    1725
   ],
   "confidence": "E",
   "note": "Absent at 1.9 s, present at 2.5 s."
  },
  {
   "placement": "ig_reels",
   "label": "Profile row (card open)",
   "t0": 10.6,
   "t1": null,
   "box": [
    45,
    1366,
    935,
    1425
   ],
   "confidence": "M",
   "note": "Moves up when the card opens."
  },
  {
   "placement": "ig_reels",
   "label": "Expanded ad card + CTA",
   "t0": 10.6,
   "t1": null,
   "box": [
    47,
    1454,
    870,
    1724
   ],
   "confidence": "M",
   "note": "Card with text opens at about 10.6 s and stays open to the last sample (21.6 s)."
  },
  {
   "placement": "fb_reels",
   "label": "Profile row",
   "t0": 0,
   "t1": null,
   "box": [
    45,
    1436,
    935,
    1537
   ],
   "confidence": "M",
   "note": "Static from 0.1 s to the end of the clip."
  },
  {
   "placement": "fb_reels",
   "label": "Caption",
   "t0": 0,
   "t1": null,
   "box": [
    45,
    1560,
    900,
    1600
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "fb_reels",
   "label": "CTA bar",
   "t0": 0,
   "t1": null,
   "box": [
    50,
    1652,
    905,
    1761
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "fb_reels",
   "label": "Ad tag",
   "t0": 0,
   "t1": null,
   "box": [
    45,
    1797,
    135,
    1869
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "fb_reels",
   "label": "Action rail",
   "t0": 0,
   "t1": null,
   "box": [
    940,
    1330,
    1080,
    1920
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "an_native",
   "label": "Top bar",
   "t0": 0,
   "t1": null,
   "box": [
    0,
    0,
    1080,
    140
   ],
   "confidence": "M",
   "note": ""
  },
  {
   "placement": "an_native",
   "label": "Caption + CTA card",
   "t0": 0,
   "t1": null,
   "box": [
    0,
    1430,
    1080,
    1920
   ],
   "confidence": "E",
   "note": "Seen from 5.3 s to 29.6 s; 0 to 5 s not sampled."
  }
 ],
 "free_bottom_by_segment": [
  {
   "seg": "0 to 1 s",
   "a": 0,
   "b": 1.0,
   "ig_stories": 1805,
   "fb_stories": 1895,
   "ig_reels": 1530,
   "fb_reels": 1411,
   "an_native": 1405,
   "core": 1411,
   "ig3": 1530,
   "top": 210
  },
  {
   "seg": "1 to 2.5 s",
   "a": 1.0,
   "b": 2.5,
   "ig_stories": 1595,
   "fb_stories": 1605,
   "ig_reels": 1530,
   "fb_reels": 1411,
   "an_native": 1405,
   "core": 1411,
   "ig3": 1530,
   "top": 210
  },
  {
   "seg": "2.5 to 10.6 s",
   "a": 2.5,
   "b": 10.6,
   "ig_stories": 1595,
   "fb_stories": 1605,
   "ig_reels": 1530,
   "fb_reels": 1411,
   "an_native": 1405,
   "core": 1411,
   "ig3": 1530,
   "top": 210
  },
  {
   "seg": "10.6 to 30 s",
   "a": 10.6,
   "b": 30,
   "ig_stories": 1595,
   "fb_stories": 1605,
   "ig_reels": 1341,
   "fb_reels": 1411,
   "an_native": 1405,
   "core": 1341,
   "ig3": 1341,
   "top": 210
  }
 ],
 "feed_crops_of_9x16": {
  "accuracy_px": 40,
  "rows": [
   {
    "placement": "Facebook Feed",
    "from": 285,
    "to": 1635
   },
   {
    "placement": "Facebook profile feed",
    "from": 285,
    "to": 1635
   },
   {
    "placement": "Instagram profile feed",
    "from": 285,
    "to": 1635
   },
   {
    "placement": "Instagram feed",
    "from": 0,
    "to": 1630,
    "note": "profile header drawn over rows 0 to 110"
   },
   {
    "placement": "Facebook Marketplace",
    "from": 420,
    "to": 1500
   },
   {
    "placement": "Threads feed",
    "from": 0,
    "to": 1920,
    "note": "whole file, shown small"
   }
  ]
 },
 "square_and_4x5_in_vertical": {
  "accuracy_px": 60,
  "estimate": true,
  "rows": [
   {
    "placement": "1:1 in Instagram Stories",
    "from": 200,
    "to": 1280
   },
   {
    "placement": "1:1 in Facebook Stories",
    "from": 220,
    "to": 1300
   },
   {
    "placement": "1:1 in Reels (centred)",
    "from": 420,
    "to": 1500
   },
   {
    "placement": "4:5 in Instagram Stories",
    "from": 240,
    "to": 1590
   },
   {
    "placement": "4:5 in Facebook Stories",
    "from": 285,
    "to": 1635
   },
   {
    "placement": "4:5 in Reels (centred)",
    "from": 285,
    "to": 1635
   }
  ]
 },
 "notes": [
  "t1 null means until the end of the ad. The test clip was 30 s long, but the last samples were earlier (see below); everything after the last sample is treated as unchanged.",
  "Instagram Reels card opening could be tied to dwell time rather than video time. Not separated in this test.",
  "Weights are placeholders. Replace with the account placement delivery split.",
  "main_column_x is the column the free rows are measured in: x 60 to 930, keeping the right edge for the Reels buttons. top_px is the top edge used for every placement: the tallest top bar (Instagram Reels, 170) plus a margin.",
  "Feed crops are read off grid clips (plus or minus 40 px). 1:1 and 4:5 rows inside Stories and Reels are estimated from preview geometry (plus or minus 60 px).",
  "The first second of both Stories placements was not sampled: the CTA pills were already up at the first sample, 1.2 s. Their t0 of 1.0 is an estimate, and the 0 to 1 s Stories free rows follow from it rather than from an observation.",
  "Last samples: the Instagram Reels expanded card at 21.6 s and the Stories pills at 22 s. Everything after that, to the 30 s end of the clip, is assumed unchanged.",
  "1:1 and 4:5 files are shown whole in every feed with nothing drawn on the media; the Instagram feed header over rows 0 to 110 was seen on a 9:16 file only.",
  "Audience Network replaces the video with an end card (logo, headline, button) when it ends. Facebook in-stream Reels and Ads on Facebook Reels showed a small sponsored card with a thumbnail and did not play the video in the preview. Instagram Explore home flagged a 1:1 file as undeliverable."
 ]
}