How do I repurpose an Instagram Reel into a blog post?
One 161.2-second Reel came back from this tool as 338 words in 27 segments — 1,875 characters of speech at 125.8 words a minute — and that single run already holds all three outputs. The same 27 segments write out as 2,784 bytes of .srt or 2,792 of .vtt, they paste as a 27-line thread at 69.4 characters a line, and the 338 words are the raw material for a post that needs 2.96 Reels to reach 1,000 words. Nothing is transcribed twice. What has to be rebuilt is the structure: 17 of the 27 lines stop mid-sentence, the timestamp box ships ticked so the default copy is 2,280 characters of which 405 are stamps, and the plain-text path in app.js adds 0 line breaks of its own.
The rest of this page is the arithmetic behind those figures: what the measured run actually returned and how stable its density is across two lengths, what each of the three outputs costs in bytes and characters, the five places in the export that work against a paste, why 17 of 27 lines cannot be trusted as sentence ends, and what the three pages that outrank this one say about repurposing across 221,262 characters of their own copy.
What one measured run actually returns
The run is a 161.2-second single-voice recording, transcribed in 71.4 seconds on the better-accuracy checkpoint, in this browser, on this machine, on 27 October 2026. The panel reported 338 words and 27 segments. Strip the 15-character stamp in front of each line and the text is 1,875 characters, which is 5.547 characters a word — the ratio that turns any word target into a character count.
- 125.8 words a minute, and stable enough to budget with. 338 ÷ 161.2 × 60 = 125.81. A second run on the same machine, 600.3 seconds long, returned 1,194 words, which is 119.34 words a minute — 6.47 words a minute apart. For planning that is one number: a minute of speech is worth about 120 words, and 1,000 words is about 8 minutes of talking.
- 12.52 words per segment, 5.97 seconds long. 338 ÷ 27 = 12.52 and 161.2 ÷ 27 = 5.97. The longer run gave 10.76 words and 5.41 seconds per segment. A segment is a decoding window, not a sentence, which is the whole problem in the paragraph section below.
- 5.547 characters per word, so 1,875 characters for 338 words. That is what makes a word target convertible: 1,000 words is 5,547 characters of transcript, not 6,000 and not 4,000. Measured on the other run it is 5.36 characters a word, so the conversion holds within about 4%.
The three outputs, and what each one costs
All three come out of one run, and only one of them has an overhead you can calculate before you start. The subtitle files are 2,784 bytes for the .srt and 2,792 for the .vtt against 1,875 characters of words, and the 909 bytes between them are 32 bytes of scaffolding per cue plus 45 digits of numbering for cues 1 to 27.
- Subtitles: 2,784 bytes, finished when the run ends. The 8-byte gap between the .srt and the .vtt is the WEBVTT header, so the two files are the same document with a different first line. Everything else is the words plus a 12-character stamp at each end of each cue and a cue number, which is why the file is 909 bytes longer than the 1,875 characters it carries.
- Thread: 27 lines, 69.4 characters each. This is the segments exactly as they came back — 1,875 characters over 27 lines. What it is not is 27 sentences: the run holds 16 sentence-ending marks spread across those lines, and only 10 of the 27 lines end on one, so a thread posted line for line inherits every one of those breaks.
- Post: the only arm that needs more input. At 338 words a Reel, 1,000 words is 2.96 Reels — 5,547 characters of transcript and 7.95 minutes of speech at 125.81 words a minute, or 476.9 seconds. Keep the stamps and the same 1,000 words arrive with 1,198 characters of timecode in front of them, which is about a fifth of everything you paste.
Five things in the export that work against a paste
The words are clean; the container around them is not. Four of the five are visible on the page you are reading and one is in app.js, and all five are worth checking before you paste 1,875 characters into an editor.
- The timestamp box is ticked when the page loads. Line 69 of index.html is
<input type="checkbox" id="ts" checked>, so the default copy is the 2,280-character version and not the 1,875-character one: 405 extra characters, 15 per line, 17.8% of what lands on the clipboard. - Copy is not a separate export. The Copy button and the .txt download both read
currentBody(), which returns$('text').textContent— whatever is on screen at that moment. Unticking the box changes both at once: the same 405 characters are in the copy or in neither, and there is no setting where the screen shows stamps and the clipboard does not. - The plain-text path adds no line breaks of its own. Four places in the 22,349 bytes of app.js write a newline — lines 383, 386 and 387 in the two subtitle builders, and line 419 in the timestamped view — and none of them is on the plain-text path, where the body is
data.textexactly as the model returned it. Paragraph breaks are yours to add. - Every download is called transcript.txt. The name is a template with no date and no source in it (line 520:
transcript.${kind}), so the second Reel of the 2.96 arrives in the downloads folder under the same name as the first and your browser renames it transcript (1).txt. Three Reels, three identical names. - Annotations survive the paste even though the counter ignores them. The 20-character regex on line 413 strips
[Music]and(smooth music)before the word count runs, but it is applied to a copy used only for counting; the string that is displayed, copied and downloaded is the untouched one. A 1,875-character transcript can therefore carry a bracketed annotation the panel reports as 0 words.
Rebuilding paragraphs, because 17 of 27 lines stop mid-sentence
The transcript is 27 decoding windows, and a window closes on a timer rather than on a full stop. In the 1,875-character run, 10 of the 27 lines end with a full stop, a question mark or an exclamation mark; the other 17 end wherever the window ran out, often after a comma. 11 of the 27 lines begin with a capital, which means the other 16 begin mid-sentence.
- Merge three segments and you get 9 paragraphs of 37.6 words. That is the whole edit in one line: 27 ÷ 3 = 9, and 338 ÷ 9 = 37.6. Merging two gives 14 paragraphs at 24.1 words, merging four gives 7 at 48.3 — all three land inside the range a blog paragraph is usually written in, so the choice is about rhythm rather than length.
- The window is 30 seconds and the stride is 5, so windows advance 20 seconds at a time. That is ceil((161.2 − 30) ÷ 20) + 1 = 8 windows for this clip, holding 3.375 segments and 42.25 words each. The 600.3-second run needed 30 windows for 111 segments, which is the same 20-second step over a longer file.
- The export cannot help you here.
toSegments()collapses every run of whitespace to a single space before the segment is stored, so whatever paragraph structure the speaker used is gone from the 1,875 characters before the text reaches the panel. The merge has to happen on your side, which is also why it is the only part of this job that takes real reading.
What the three pages that outrank this one say about it
Across the 30 Instagram pages the three sites publish — 221,262 characters of body text once the heading lists and the navigation are stripped, because those are not sentences a reader sees — the word “blog” appears 30 times on wayin.ai, 8 times on speakapp.com and 4 times on getthescript.app, and the stem “repurpos” 17, 10 and 10 times. All three name the blog post as a destination. None of them says what one Reel is worth in words.
- wayin.ai uses “blog” 30 times across 134,178 characters, and 26 of those are the same navigation link. Of the 4 that are prose, one is about Instagram’s own blog and one is the export line: “Download as plain text (TXT / DOC / PDF) for blog posts and content repurposing, or choose timestamped formats (SRT / VTT) for subtitle workflows and video editing pipelines.” It names the destination and stops there.
- getthescript.app has 4 mentions in 40,928 characters, and both of its repurposing lines are benefit statements rather than instructions. The transcript page says “Turn Reels into carousel copy, captions, and newsletters without retyping a word”, and the summariser page says “Turn Reel summaries into tweet threads, newsletter blurbs, or blog outlines effortlessly” — outlines, which is a shorter object than a post.
- speakapp.com has 8 mentions in 46,156 characters, and every one is a testimonial or a use-case sentence. Two of them: “I use this to repurpose Reel content into blog posts and newsletters” and “the transcript becomes the basis of the blog post in minutes”. Neither says how long the transcript was or how many Reels went into it.
- 0 of the three gives a word count for a Reel, a number of Reels per post, or a rule for turning segments into paragraphs. The gap is not the destination — all three name it clearly — it is the 2.96 that sits between one Reel and one 1,000-word post, and the 405 characters of timecode standing between the copy and the paste.
How many Reels do I need for a 1,000-word post?
2.96 at the density measured here: 338 words from a 161.2-second Reel, so 1,000 ÷ 338 = 2.96. That is 5,547 characters of transcript and 476.9 seconds — 7.95 minutes — of speech at 125.81 words a minute. Round up to three Reels and you have 1,014 words. The longer run is the exception worth knowing: 1,194 words from one 600.3-second Reel is 1.19 posts on its own.
Should I keep the timestamps when I paste into a blog?
No, unless the post is itself a transcript. The stamps are 405 characters inside a 2,280-character copy, 17.8% of it, and at 15 characters a line they interrupt every sentence they sit in front of. Untick the box before you copy — the button copies what is on screen, so unticking it is the whole fix, and 1,875 characters arrive instead of 2,280.
Can I get the whole transcript as one paragraph?
Not from this tool, and not because paragraphs are hard. The plain-text path writes data.text unchanged and adds 0 line breaks of its own; the only newlines in app.js are in the two subtitle builders and in the timestamped view. You get 1,875 characters carrying the model’s own breaks, and the paragraph structure is something you add — 9 paragraphs of 37.6 words if you merge three segments at a time.
Do I need to run the transcript again for each output?
No. One run produces all three: 27 cues for the subtitle files, 27 lines for the thread and 338 words for the post, all from the same 161.2 seconds of audio and the same 71.4-second transcription. A second run would give you the same 1,875 characters with different segment boundaries, because the windows are timed rather than chosen, so it would cost 71.4 seconds to arrive at a slightly different place.
What does a 10-minute Reel give me on its own?
1,194 words, measured: a 600.3-second run returned 111 segments and 8,173 characters of timestamped text, which is 1.19 posts of 1,000 words before you add anything. Its density was slightly lower than the short run — 119.34 words a minute against 125.81 — so budget by the minute rather than by the Reel, and expect a 10-minute clip to be worth about 1,200 words and 6,398 characters once the stamps come off.
Last checked: 29 October 2026. Every count here was measured on this machine or read out of the deployed files. The transcript figures come from a 161.2-second run on 27 October 2026 — 338 words, 27 segments, 71.4 seconds, 1,875 characters after the stamps are removed — and from a 600.3-second run the same day that returned 1,194 words, 111 segments, 8,173 characters and 251.5 seconds of recognition. The 2,784 and 2,792 byte figures were produced by running this site’s own buildSrt() and buildVtt() over the real 27 lines of that transcript; because a stamp is a fixed 12 characters, the byte count does not depend on the times used, and 2,784 − 1,875 = 909 = 27 × 32 + 45 was checked against the printed output. The window count is arithmetic on chunk_length_s: 30 and the library’s 5-second stride, not a measurement. The source counts were read from the deployed app.js, which is 22,349 bytes: newline writes at lines 383, 386, 387 and 419 and nowhere else, the annotation regex at line 413, the download name at line 520, and the timestamp checkbox at line 69 of index.html. The competitor figures cover 30 Instagram pages and 221,262 characters of body text in the benchmark files held on this machine, counted after the heading lists and navigation were stripped; every quoted sentence is reproduced as written and attributed to the page it came from. Nothing on this page estimates search volume, difficulty or price.
If the question is what a transcript is for rather than how to cut one up, what to do with an Instagram transcript covers the three jobs and the byte cost of each of the four outputs. The SRT and VTT page takes the 2,784-byte file apart cue by cue, the timestamps page explains what the 15 characters in front of each line are made of, and the accuracy page covers the 19 words that came back wrong in this same 338-word run — worth reading before you publish 1,875 characters under your own name.