Hook Rate: What It Is, the 3-Second Formula, and What a Low One Means
Hook rate is 3-second video plays divided by impressions, a ratio advertisers build on top of Meta's own metric. Here is the formula, how to add it as a custom column in Meta and TikTok, and what a low hook versus a low hold tells you to fix.
Mauricio Valdivia
·11 min

Hook rate is a ratio you build, not a column
Your media buyer says the new UGC ad "hooks well." You open Meta Ads Manager to check. You scroll across every column you have. There is no hook rate. There is a column for 3-second video plays, and there is Impressions, and the number everyone argues about is the one you have to divide yourself.
Hook rate is the share of your ad's impressions that turned into at least a 3-second video play. It is the first read on any video ad: did the opening stop the scroll, before anyone judges the product, the offer or the price. The formula is one division. The hard part is knowing exactly what the numerator counts, because the platform's counting rules decide what your number means.
This guide covers the formula on Meta's own definition, the custom metric that puts it in a column, the TikTok version, hold rate as its companion with the three denominators people use for it, and what a low hook versus a low hold tells you to fix. It carries no benchmark on purpose. For bars by category, read the 2026 video ad benchmarks after this.
The formula, and the Meta metric underneath it
Hook rate = 3-second video plays / impressions
The hook rate formula: hook rate = 3-second video plays / impressions × 100.
Search the Meta and TikTok help articles this guide cites, the ones that define those metrics, and the phrase "hook rate" does not appear on any of them. Neither does "hold rate." Both are industry-built custom metrics, not platform-native columns. That has a practical cost: every team can define them a little differently, and nobody at Meta is keeping your definition consistent for you. So write yours down.
Impressions is the denominator because it is the honest one. Every time the ad was served, it had a chance to hook someone. Reach would be the wrong unit: Meta defines reach as "The number of people who see your ad at least once," while 3-second plays are counted per impression. Dividing plays by reach mixes servings with people, and the mismatch grows with frequency.
What Meta counts as a 3-second play
Meta's Business Help Center defines 3-second video plays as "The number of times your video played for at least 3 seconds, or for nearly its total length if it's shorter than 3 seconds."
The same page puts a number on "nearly." Its calculation note reads: "This metric counts the number of times your video played for 3 seconds, or for 97% of its total length if it's shorter than 3 seconds." And it gives a worked case: "If someone plays a 2-second video for 1.94 seconds, or a 3-second video for 2.91 seconds, that counts as a 3-second video view."
In practice:
- A video longer than 3 seconds needs 3 seconds of play to count.
- A video shorter than 3 seconds counts once 97% of it has played.
- The 97% cutoff reaches the 3-second clip too, which is why Meta's example of a 3-second video played for 2.91 seconds still counts.
One consequence is mine to point out, not Meta's. A 2-second bumper or a looping product clip clears the bar sooner than a 30-second testimonial does, so its hook rate is measuring a different thing. Compare hook rates only between videos that both run longer than 3 seconds.
Plays, not seconds: replays and the old name
Three more counting rules change the read:
- One count per impression. "For each impression of a video, video plays are counted separately and exclude any time spent replaying the video."
- Played, not elapsed. The metric "counts how much of a video was played, instead of the amount of time that passed while the video was playing."
- Rewinds do not add up. Someone who plays a 3-second video for 2 seconds, rewinds and watches the first 2 seconds again does not produce a play: "this will not count as a 3-second video view, because replays are not included."
Then there is the name. Older articles, exports and saved reports call the numerator "3-second video views." Meta's page on metrics being removed lists "3-second video views" beside "3-second video plays" in a set of renamed video metrics and says: "Please note that these are merely naming updates. There will be no change to how these metrics are calculated." A hook rate built on the old name and one built on the new name are the same division.
Meta's help pages are living documents without a visible date. Every definition quoted here is as read on September 28, 2026.

Build hook rate as a custom metric in Meta Ads Manager
Meta's custom metrics feature exists for exactly this job. In Meta's words: "You can apply calculations to existing metrics and save the formula under a name for future use."
The steps, in order
- Go to Ads Manager and select Columns.
- Choose Customize columns from the dropdown menu.
- Select Create custom metric.
- Build the formula. Meta's form says to "Build a formula by selecting a metric from the Select metric dropdown menu." Pick 3-second video plays, add the division operator, then pick Impressions.
- Name it. Meta allows hyphens, underscores and spaces, so something like "Hook rate 3s" keeps the definition in the name.
- Set the format. The form offers Numeric, Percentage (%) or Currency ($) formats. Pick Percentage.
- Choose who can access it, then click Create metric to finish.
Three rules that trip people up
- The minimum formula. Meta's error guide says: "You need at least two metrics and one symbol in a formula." Hook rate is exactly that, two metrics and one division sign, so it is the smallest legal formula there is.
- Sharing locks it. If you choose "Everyone with access to this ad account," anyone with access to your account can see it, but they cannot edit the formula. Meta is blunt about the owner too: "You cannot edit or delete the custom metric formula once shared." Build it under "Only you," check it, then share it.
- It changes nothing underneath. Meta notes that only basic mathematical calculations are performed based on your formula to deliver your result, and "This does not add to or modify the metric." Every counting rule on 3-second plays flows straight into your hook rate.
How to know it worked
Pick one ad with real delivery. Put 3-second video plays, Impressions and the new column side by side. Meta's standard video columns sit under Columns > Video engagement. Divide the two by hand. If your column matches, share it with the ad account so the whole team reads the same number. If it is off by a factor of 100, adjust the formula until the column matches your hand math. Fix that before anyone makes a budget call on it.
The TikTok version: 2-second and 6-second views
TikTok's video play metrics page defines its standard time-based views at 2 seconds and at 6 seconds, plus views at 25%, 50%, 75% and 100% of the video's length. A TikTok hook rate is built from one of the time-based pair.
2-second views / impressions, the closest match
TikTok defines 2-second video views as the "Number of times your video starts playing for at least 2 seconds in an impression session. Replays are excluded." Divide that by impressions and you have the nearest thing to Meta's hook rate. It is one second looser, so a TikTok 2-second rate and a Meta 3-second rate are different numbers even for the same file.
TikTok also has an impression rule that can move both sides of the ratio: "If the person swipes away from the video and swipes back, it is counted as 2 impressions," and the new video view is counted again with the new impression session. Both the numerator and the denominator move together in that case. That is one more reason to compare TikTok rates only with TikTok rates.
6-second views, stricter but not pure watch time
TikTok's 6-second video views count a play of at least 6 seconds, a play in full if the video is shorter than 6 seconds, "or received at least 1 engagement within the first 6 seconds." That last clause matters. A like or a click early on counts as a 6-second view even if the person never watched 6 seconds.
So 6-second views / impressions is a stricter hook read, but it mixes attention with engagement. Put that in the column's description so nobody reads it as pure watch time.
TikTok also reports 6-second and 15-second focused views. The standard versions count interactions too: the 15-second one counts a view of at least 15 seconds "or the person initiates any interactions within the first 15 seconds." Each carries the same note: "This metric is only available for advertisers using focused view products." If you are not buying focused view, build on the standard 2-second and 6-second views.
Building it in TikTok Ads Manager
The flow mirrors Meta's. TikTok says its custom metrics let you "apply calculations to existing metrics and save the formula for future use." From the Campaign page:
- Choose Custom Columns from the dropdown menu.
- Click Add Custom Metrics and enter a name. Names have a 45 character limit.
- Select a format: Number, Percentage or Money.
- Build the formula with the formula buttons. To pull in 2-second video views and impressions, use the +Metrics button.
- Choose "Only you" or "Everyone can access this," then save.
Build two columns, one on 2-second views and one on 6-second views, and keep them side by side. The gap between them is already a rough first read on hold, with the engagement caveat attached.

Hold rate: the companion with three denominators
Hook rate says whether the opening stopped the scroll. Hold rate is the name people give the next question: of those, how many stayed. Hook rate has one common formula. Hold rate does not. You will meet at least three versions, and they do not agree.
ThruPlays / impressions
Meta's ThruPlays column counts "The number of times your video was played to completion, or for at least 15 seconds." Divide by impressions and you get the share of all servings that became a long view.
- Good for: comparing ads side by side, because it shares hook rate's denominator.
- Blind spot: it cannot separate a weak opening from a weak middle. A bad hook drags it down too.
ThruPlays / 3-second video plays
Divide by 3-second plays instead and the question becomes: of the people the hook caught, how many stayed to a ThruPlay.
- Good for: isolating the body of the ad from its opening, which is what most people mean when they say "hold."
- Blind spot: the mirror image. An ad with a weak hook and a small, committed audience can post a high hold on very few people.
A pure time or length read
Some teams avoid ThruPlays because of its completion clause: under that definition, a 10-second ad played to the end counts as a ThruPlay without ever reaching 15 seconds. They use a fixed-time or fixed-length metric instead.
- TikTok 15-second focused views (paid views). "The number of times your video was viewed for at least 15 seconds, or viewed in full if it is less than 15 seconds long." No interaction clause, but only for focused view advertisers.
- Meta video plays at 25%, 50%, 75%, 95% and 100%. Each counts plays at that share of the length, "including plays that skipped to this point," so an audience that scrubs ahead inflates them.
- TikTok video views at 25% to 100%. Counted per impression, with replays excluded.
None of these is an official hold rate: none of the Meta or TikTok help pages this guide cites defines one. Pick one, put its denominator in the column name, and never compare a number built one way with a number built another.
The ThruPlay goal is not the ThruPlays column
Meta uses the word ThruPlay for two different things. As a delivery setting, "ThruPlay is a performance goal," and "ThruPlay is available at durations of 6 seconds or 15 seconds." The 6s goal counts someone who watches at least 6 seconds, or to 97% completion if the video is shorter; the 15s goal counts at least 15 seconds, or 97% completion if the video is shorter than 15 seconds.
As a reporting column, ThruPlays reads "played to completion, or for at least 15 seconds." The goal tells Meta whom to deliver to. The column is a count you divide. A hold rate is built from a column, so name the column in the metric, never the goal you optimized for.
A worked example: two ads, opposite verdicts
The counts below are made up to show the arithmetic. They are not a benchmark or a target.
| Ad A | Ad B | |
|---|---|---|
| Impressions | 50,000 | 50,000 |
| 3-second video plays | 11,000 | 6,500 |
| ThruPlays | 2,600 | 2,400 |
| Hook rate | 22.0% | 13.0% |
| ThruPlays / impressions | 5.2% | 4.8% |
| ThruPlays / 3-second plays | 23.6% | 36.9% |
By hook rate, Ad A wins clearly. By ThruPlays over impressions, A still edges it, 5.2% to 4.8%. By ThruPlays over 3-second plays, B wins by a wide margin, 36.9% to 23.6%. Same ads, same data, and "which one holds better" flips with the denominator.
Read together, the numbers say something no single ratio does. B's body keeps people; its opening loses them. A's opening catches people; its middle leaks them. B needs a new opening on the same body. A needs a new middle behind the same opening. A team that tracks only one hold rate would fix the wrong ad.
What a low hook and a low hold point to
| Pattern | Points to | Next step |
|---|---|---|
| Low hook rate | The first seconds | Test new openings |
| Good hook, low hold | The body and pacing | Recut the middle |
| Both fine, weak sales | Offer, page or audience | Check ROAS and MER |
| Both sliding, steady spend | Creative fatigue | Refresh the creative |
A low hook rate: the opening seconds
If hook rate is low, the failure sits inside the opening seconds of the file: the first frame, the first line, the first movement. Nothing after that got a chance to work. The fix is a new opening on the same body, tested so that only the opening changes. Testing ad hook variations on one video covers how to run that test and read it, and how to write ad hooks covers the lines themselves.
The cheapest input to that test is more openings. You can generate them as AI UGC in Novoads and keep the body you already know works.
A good hook with a low hold: the body
People stopped, then left. Two causes are the usual suspects: the opening promised something the next seconds did not pay off, or the pace sagged right after the hook. Recut the middle before you touch the opening:
- Reach the product sooner.
- Cut the second sentence of throat-clearing.
- Show the result before explaining it.
The ThruPlays over 3-second plays version of hold is the one to watch here, because it ignores the people the hook never caught.
Good numbers on both, weak results: look downstream
An ad that hooks and holds and still does not sell has an attention metric that is doing its job. The problem is usually the offer, the landing page or the audience, which is why a strong hook rate is not proof an ad works, the same trap as reading a high CTR as a good ad. Check ROAS and your marketing efficiency ratio before you touch the creative.
If both rates were healthy and are sliding week over week at steady spend, that is a different diagnosis: creative fatigue. For the full ladder of metrics from attention to revenue, creative analytics lays out the order to read them in.
How Novoads solves the low-hook problem
Novoads is an AI UGC video-ad generator: upload a product image or write a script, pick an AI actor, and get an ad-ready video. That fits the most common fix a hook rate asks for. When the opening is the problem, the answer is several new openings on a body that already holds, and each opening is a line of script, not a reshoot.
Keep the body you already have. Write three or four new first lines, render them with the same AI actor in vertical 9:16, trim each to the length of the old opening, and join it to the existing body in your editor, so the opening is the only thing that changes. Then read the new hook rate column against the old one. The metric tells you where the ad breaks. The renders give you enough openings to fix it.

A hook rate is only as honest as its denominator
Hook rate looks like the simplest number in a video ad report. One division, two columns Meta already ships. But the numerator carries a 97% rule, a per-impression count and a renamed label, the TikTok version cuts a second earlier, and its companion, hold rate, has three competing denominators that can crown opposite winners from the same data.
None of that makes the metric weak. It makes the definition the metric. Build the column once, put the formula in its name, check it by hand on one ad, and share it so everyone argues about the same number. Then let it do the one job it is good at: telling you whether the first seconds worked, so you know which part of the ad to make again.
Frequently Asked Questions
What is hook rate?
Hook rate is the share of a video ad's impressions that turned into at least a 3-second video play. It answers one question: did the opening stop the scroll. It says nothing about whether people liked the product or bought it. Advertisers build it themselves from platform metrics; it is an industry-built custom metric, not a platform-native column.
How do you calculate hook rate?
Divide 3-second video plays by impressions and multiply by 100. Meta's Business Help Center defines 3-second video plays as the number of times a video played for at least 3 seconds, or for nearly its total length if it is shorter than 3 seconds, and its calculation note sets that cutoff at 97% of the length. Plays are counted per impression and replays are excluded.
What is a good hook rate?
This guide carries no bar on purpose, because a hook rate only means something against ads like yours: same platform, same placement mix, same category. Start with your own account's median across recent video ads, then compare against category benchmarks in Novoads' video ad benchmarks post. Never compare a Meta 3-second rate with a TikTok 2-second rate.
What is the difference between hook rate and hold rate?
Hook rate measures whether people stopped for the opening. Hold rate measures whether they stayed. Hook rate has a common formula, 3-second plays over impressions. Hold rate does not: teams use ThruPlays over impressions, ThruPlays over 3-second plays, or a fixed time or length metric, and those can rank the same ads differently. Write the denominator into the column name.
How do I add hook rate in Meta Ads Manager?
In Ads Manager, select Columns, choose Customize columns, then Create custom metric. Build the formula 3-second video plays divided by Impressions, name it, set the format to Percentage, and create it. Meta's rules: a formula needs at least two metrics and one symbol, and a shared custom metric's formula cannot be edited or deleted, so check it privately before you share it.
What is the TikTok equivalent of hook rate?
The closest match is 2-second video views divided by impressions, built as a custom metric in TikTok Ads Manager (Custom Columns, then Add Custom Metrics). A stricter version uses 6-second video views, but TikTok counts a 6-second view when someone engages within the first 6 seconds even without watching 6 seconds, so label it as a mixed attention and engagement read.
Key Takeaways
- Hook rate is 3-second video plays divided by impressions: the share of times your ad was served that turned into at least a 3-second play. It is a ratio advertisers build from platform metrics; the Meta and TikTok help pages that define its parts never use the term.
- Meta counts a 3-second play at 3 seconds, or at 97% of the length for a video shorter than 3 seconds, once per impression, with replays excluded. Those rules decide what your hook rate means.
- On TikTok the closest match is 2-second video views divided by impressions. A 6-second rate is stricter, but TikTok's 6-second view also counts an engagement in the first 6 seconds, so it is not pure watch time.
- Hold rate has no single formula. ThruPlays over impressions, ThruPlays over 3-second plays and pure time or length reads can rank the same two ads in opposite order, so name the denominator in the column.
- A low hook points at the opening seconds. A good hook with a low hold points at the body. Good numbers on both with weak sales point downstream, at the offer, the page or the audience.




