transcript1

Turns audio and video into text. Give it a YouTube, X, TikTok or Instagram link, or a file, and get back a transcript with timestamps and speaker labels. Under 1 cent a minute.

Hosted MCP Server

npx add-mcp 'https://api.transcript1.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Audio and video to text, under 1¢ a minute.

Transcribe social media videos or files up to 2 GB. YouTube, X, TikTok, Instagram, Facebook, Bluesky and more. API, MCP, CLI or dashboard. 60 free minutes.

Canonical: https://transcript1.com/ Last updated: 2026-10-13

Transcribe social media videos from YouTube, X, TikTok, Instagram, Facebook and Bluesky. Also use Twitch clips and completed VODs, Dailymotion videos, Pinterest video Pins, LinkedIn video posts or Snapchat Spotlight videos. Or upload audio and video up to 2 GB. Use the dashboard, CLI, REST API or MCP server.

$9 / month for 1,000 minutes

60 minutes free once, after email verification. No card required.

See a finished transcript

Pick an example to see its transcript in every format, or try your own link or file.

Fictional examples. Choose one to see its finished transcript.

Podcast clip

[00:00:00] What did you bring on your first overnight walk?
[00:00:06] Too much. I packed two books and read neither.
[00:00:12] Next time, one book and a lighter bag.
[00:00:18] And dry socks. Those earned their space.

With an account, upload files up to 2 GB, add speaker labels, and download SRT or VTT.

From code or an agent

Use the API or CLI with a t1_ API key, or connect your AI assistant over MCP.

cURL

curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'

Python

import os
import requests

headers = {"Authorization": f"Bearer {os.environ['TRANSCRIPT1_API_KEY']}"}
response = requests.post(
    "https://api.transcript1.com/v1/transcriptions?wait=60",
    headers=headers,
    json={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
)
response.raise_for_status()
transcription = response.json()
while True:
    transcription = requests.get(
        f"https://api.transcript1.com/v1/transcriptions/{transcription['id']}?wait=60",
        headers=headers,
    ).json()
    if transcription["status"] in ("completed", "failed", "canceled"):
        break

if transcription["status"] == "completed":
    print(transcription["transcript"]["text"])
else:
    print(transcription["status"], transcription["error"])

Node.js

// npm i @transcript1/sdk
import { Transcript1 } from '@transcript1/sdk';

const t1 = new Transcript1();
const transcription = await t1.transcribe('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
console.log(transcription.transcript.text);

Response

{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "object": "transcription",
  "status": "completed",
  "source": {
    "platform": "youtube",
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "media_id": "dQw4w9WgXcQ"
  },
  "media": {
    "title": "Example video",
    "author": "Example channel",
    "duration_seconds": 212
  },
  "options": {
    "source": "auto",
    "language": "auto",
    "diarize": false
  },
  "transcript_source": "youtube_captions",
  "caption_kind": "auto_generated",
  "language": "en",
  "billed_minutes": 4,
  "cached": false,
  "error": null,
  "created_at": "2026-10-13T09:30:00.000Z",
  "completed_at": "2026-10-13T09:30:04.000Z",
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "speakers": [],
    "segments": [
      {
        "start": 0,
        "end": 4.2,
        "speaker": null,
        "language": "en",
        "text": "Welcome back to the channel."
      },
      {
        "start": 4.2,
        "end": 9.8,
        "speaker": null,
        "language": "en",
        "text": "Today we are looking at how transcripts are made."
      }
    ]
  }
}

In your AI agent (MCP)

transcribe(url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# Returns the transcript of the video.

Works with Claude, ChatGPT, Cursor, VS Code and Claude Code over OAuth or an API key.

Claude Code

claude mcp add --transport http transcript1 https://api.transcript1.com/mcp

In your terminal

curl -fsSL https://transcript1.com/install.sh | sh
transcript1 'https://youtu.be/dQw4w9WgXcQ'

Simple pricing per audio minute

1 credit = 1 audio minute, rounded up per transcription. Platform captions and AI transcription cost the same. Failed and canceled transcriptions are never charged.

Use all your included minutes and pay 0.9¢ per minute on Monthly or 0.75¢ on Annual.

PlanPriceMinutesTop-upsRequestsJobs at once
Free$060 minutes, onceTop-ups not available30 requests / minute2 active jobs
Monthly$9 / month1,000 minutes / month$6 per 1,000 minutes200 requests / minute10 active jobs
Annual$90 / year1,000 minutes / month$5 per 1,000 minutes300 requests / minute20 active jobs

Add minutes with top-ups

Buy extra minutes on Monthly or Annual. Top-up minutes are usable while a paid plan is active.

Everything a transcript needs

Example segment

{
  "start": 3.4,
  "end": 7.9,
  "speaker": "Speaker 1",
  "language": "en",
  "text": "We will start with a short overview of what we plan to cover."
}

Social media video transcription

Transcribe public video posts or audio and video uploads up to 2 GB with AI speech-to-text. For posts with several videos, only the first video is used.

Social media video transcription

Platform captions first

Use existing YouTube, X, TikTok, Bluesky, Dailymotion and LinkedIn captions when a usable track exists. Otherwise, transcript1 transcribes the audio.

Platform captions first

Timestamps

Each segment has start and end times. AI transcription and auto-generated YouTube captions also include word timings. X captions have segment timing only, as do TikTok, Bluesky, Dailymotion and LinkedIn captions.

Timestamps

Speaker labels

Set diarize=true to label speakers as Speaker 1, Speaker 2 and so on.

Speaker labels

Language detection

Each segment reports its language. You can also pass a language hint.

Language detection

JSON, text, SRT, VTT

Get plain text for reading, JSON for your app, or SRT and VTT subtitle files.

JSON, text, SRT, VTT

Webhooks

Get a signed POST when a transcription completes or fails.

Webhooks

Frequently asked questions

Do I need code to transcribe audio to text?

No. Paste supported YouTube, X, TikTok, Instagram, Facebook, Bluesky, Twitch, Dailymotion, Pinterest, LinkedIn or Snapchat Spotlight video links, or drop a file in the dashboard. Download TXT, SRT, VTT or JSON. Developers can use CLI, API or MCP.

How much does each minute cost?

Monthly costs $9 for 1,000 minutes (under 1¢/minute); Annual costs $90/year. Both include 1,000 minutes/month. 1 credit = 1 audio minute, rounded up per transcription. Captions and AI cost the same. Failed and canceled transcriptions are never charged.

What if the video has no captions?

Auto uses usable captions from YouTube, X, TikTok, Bluesky, Dailymotion and LinkedIn first, otherwise AI at the same price. Not every video has captions. Choose STT or speaker labels to bypass captions; captions-only never transcribes audio.

How accurate will the transcript be?

Creator captions are as good as the creator made them. Auto-generated captions can miss words; choose AI transcription for cleaner text. Every transcript tells you which source it used. Review important quotes against the recording.

Will I know who said what?

Turn on speaker labels to mark each voice as Speaker 1, Speaker 2 and so on. This always uses AI transcription. In the API, set diarize=true.

Does it work when people switch languages?

Yes. Mixed-language audio works, and each segment reports its detected language. The speech-to-text API also accepts an optional language hint.

Is my video too long to transcribe?

You can convert video to text or transcribe an audio file up to 2 GB. AI transcription accepts up to 5 hours per video or file.

Can I transcribe a private video?

Social posts must be public. Public and unlisted YouTube videos are supported. Private, age-restricted and unavailable videos, live streams and posts requiring login fail without a charge. For a post with several videos, only the first video is transcribed.

Can Claude or ChatGPT transcribe a link for me?

Connect the MCP server in Claude, ChatGPT, Cursor, VS Code or Claude Code, then ask it to transcribe a supported video link. transcript1 returns the transcript. Your assistant can summarize it or pull quotes; transcript1 does not summarize.

Are there free minutes to try it?

You get 60 free minutes once, after you verify your email. No card required.

Do unused minutes roll over?

Your included 1,000 minutes reset each month and do not accumulate. Top-ups cost $6 on Monthly or $5 on Annual per 1,000 minutes. They do not expire while a paid plan is active.

What happens to my files afterward?

Uploads are deleted 24 hours after the transcription reaches a final status (completed, failed or canceled). Audio is deleted from the speech-to-text provider after processing. Transcripts stay until you delete them.

Related