Skip to main content
Back to Blog
vsl-scriptcopywritingvideo-sales-letter

How to Write a VSL Script (Video Sales Letter): A Copywriter's Guide

Nnabuike Okoroafor
Nnabuike OkoroaforApril 27, 20268 min read

A video sales letter is a long-form video, usually 10 to 40 minutes, designed to sell a high-ticket product or program without a sales call. The viewer watches in real time. They cannot scroll to the offer. They can only stay or leave.

If you have been hired to write a VSL script, you are not writing for yourself. You are writing a script that a client will perform on camera or read in voiceover. The first 90 seconds determine whether the viewer stays or leaves, which means the hook does most of the work.

This guide covers how to write a VSL that earns the viewer's time, with the freelance copywriter's job in mind: research, structure, script delivery, and the formatting decisions that make the difference between a script the client can perform and one they can't.

What Makes a VSL Different from a Sales Page

A VSL has the same persuasion architecture as a written sales page. The arguments stack in roughly the same order. But three constraints change everything about how you write it.

  • The viewer cannot skim. They experience the argument in real time. Lose them at minute three and you have lost them entirely.
  • The hook works on audio, not visuals. Even on-camera VSLs lean on the words. The first sentence is what stops the skip.
  • Pacing is a copy decision, not a production decision. Where the script speeds up and slows down is something you write into the document, not something the editor figures out later.

If you've already written written-format pages, the move from those to a VSL is mostly about adapting your approach to a viewer who can't scroll. For the side-by-side comparison see landing page versus a sales page and the broader sales page examples in that cluster.

A VSL's job is identical to a sales page's job, with one constraint: the viewer cannot scroll to the offer. They can only stay or leave. The hook is everything.

The Research Step Before the Script

The hook fails when it is invented. The hook works when it is found.

Where to find it: forum threads where the target audience describes their "before" moment. The exact sentence they use to describe the frustration that pushed them to start looking for a solution. Not the language a marketer uses to describe their pain. The language the viewer used in their own head before they knew this product existed.

One of the most-studied VSL openers in direct response history is "Do you have trouble falling asleep at night?" from a sleep supplement script. The line works not because it's clever. It works because it is the exact sentence the viewer has said to themselves in bed at 2am. It mirrors their internal dialogue.

You can't invent that sentence at your desk. You have to find it.

PhraseMine finds those sentences. Paste a brief about the product and the audience, and it returns the Reddit threads where this audience describes their frustration before they knew a solution existed. That language is the hook research. Without it, you are guessing.

For a wider view of how to capture and use this research across formats, see voice of customer research and the example case studies in that guide.

The Seven-Part VSL Structure

The seven-part structure has been refined across decades of direct response. It works because each section earns the next one.

Diagram showing the seven-part VSL structure laid out in two rows with arrows: top row shows Hook, Problem amplification, False solutions, and Mechanism reveal, and bottom row shows Proof, Offer, and CTA, each labeled with an approximate timing range
The seven-part VSL structure with timing for each section

1. Hook (60-90 seconds). The specific moment of pain. Name it in the viewer's own words. If the hook can be answered without watching the rest, it is not a hook.

2. Problem amplification (2-5 min). Why the problem is worse than the viewer realises. The hidden costs. The things they haven't thought about. This section is where the viewer thinks "this person gets it" and decides to keep watching.

3. False solutions (2-4 min). What the viewer has already tried and why it didn't work. This section builds the most trust because it shows you have walked the same path. Get this wrong and the rest of the script feels like it's selling to someone else.

4. Mechanism reveal (3-6 min). The different thing. Not a product yet. A new way of thinking about the problem. The mechanism is what makes the offer feel inevitable later.

5. Proof (5-10 min). Case studies. Testimonials. Data. Name specific outcomes with specific numbers. Vague proof feels invented. Specific proof builds the offer.

6. Offer (3-5 min). The product, the price, and everything included. Urgency in this section needs to be real. Invented urgency reads as desperation and undoes the trust the script has built.

7. CTA (1-2 min). One action. Repeat it three times. Tell them exactly what to click, what they'll see when they click it, and what happens next.

Before

Are you tired of struggling with your weight? Losing weight is hard, but it doesn't have to be. Our program makes it easy.

After

Three years ago I was doing everything the doctors told me to do. Tracking calories. Walking 10,000 steps. And I was still gaining weight. The problem wasn't my effort. It was that everything I'd been told was based on research from 1970.

The first version is a generic claim the viewer has heard a hundred times. The second version mirrors a specific thought pattern the viewer has had themselves, found from real forum conversations.

Find the exact moment your viewer's frustration peaked

PhraseMine finds Reddit threads where people describe why they finally started looking for a solution. That is where your VSL hook lives.

Try PhraseMine free

How to Write a VSL Hook That Stops the Skip

The hook is the line that earns every other line in the script. Four hook patterns work consistently across categories.

The internal dialogue. "Do you ever find yourself thinking..." followed by the exact thought the viewer has had. Mirror their self-talk word for word. The viewer recognises the line before they recognise the brand.

The specific scenario. "Six months ago I was..." followed by a situation the viewer recognises as their own. Establish shared experience first. Promise a payoff second.

The pattern interrupt. "Everything you've been told about [problem] is wrong." Stops the viewer who has tried and failed at the conventional approach. Works because the viewer is already frustrated with the conventional approach.

The counterintuitive claim. "[The thing everyone does] is actually making [the problem] worse." Creates urgency to find out why. Works because the viewer has invested time in the thing you're now telling them is the wrong thing.

The rule that holds across all four: the hook cannot be resolved by skipping the video. If the viewer can answer the hook from the headline alone, the hook hasn't done its job.

How to Format and Deliver a VSL Script to a Client

Most VSL guides skip this part. You are delivering a document that a real person will perform. Format decides whether the performance works.

Two formats to choose from:

  • Full script. Every word written out. Use for voiceover VSLs that the client will record without a camera. The performer reads exactly what's on the page.
  • Outline script. Hook and CTA scripted word-for-word. Bullet points for everything in the middle. Use for on-camera VSLs where the presenter needs to sound natural and unscripted.

What to include in the document:

  • Timing notes on each section. "Hook: 60-90 seconds." The performer needs to pace themselves before pressing record.
  • Bolded key phrases the client must not paraphrase. Headlines, claims, and the offer language stay exactly as written.
  • Stage directions in brackets. "[pause for two seconds]" or "[lower voice here]" or "[smile, then change tone]." The script tells the performer how to perform, not just what to say.
  • A clean Google Doc with comments. Add comments explaining why each section is structured the way it is. The client can push back on the rationale without rewriting your copy.

Don't deliver a PDF. PDFs feel finished. The client will paraphrase rather than ask for a change. A Google Doc invites collaboration and keeps your copy intact.

The VSL is the longest format most copywriters write. The length only works if the hook earned the viewer's time. Find the frustration first with PhraseMine or another listening tool, then build the structure around what you find.