[{"data":1,"prerenderedAt":703},["ShallowReactive",2],{"blog-en-how-to-download-bilibili-videos":3,"blog-en-how-to-download-bilibili-videos-surround":689},{"id":4,"title":5,"author":6,"body":7,"category":671,"date":672,"description":673,"extension":674,"image":334,"lastModified":675,"meta":676,"navigation":677,"path":678,"readingTime":679,"seo":680,"stem":681,"tags":682,"__hash__":688},"blog\u002Fblog\u002Fhow-to-download-bilibili-videos.md","How to Download Bilibili Videos to Your Computer (2026 Latest Guide)","FlowPick Team",{"type":8,"value":9,"toc":642},"minimark",[10,14,22,25,30,38,58,65,79,83,94,178,181,185,188,260,263,267,272,289,292,296,307,310,314,317,328,335,339,342,345,351,355,362,365,377,380,384,387,393,397,400,403,414,417,464,471,479,483,489,509,512,516,519,536,540,544,547,558,561,565,568,572,575,583,586,593,596,600,603,607,610,613,617,620,623,627,638],[11,12,13],"p",{},"Bilibili is one of the most interesting video platforms on the internet — a blend of YouTube, Reddit, and anime streaming. As of 2025, it has over 340 million monthly active users, with content ranging from hand-drawn animation to university open courses, from game speedruns to 8-hour livestream replays.",[11,15,16,17,21],{},"The official app lets premium members download for offline viewing, but the format is proprietary ",[18,19,20],"code",{},".blv",", playable only in the app, only on the device that downloaded it, and it expires when the membership ends. That's not what most people mean by \"offline.\"",[11,23,24],{},"This guide covers how to download Bilibili videos as standard MP4 files that stay on your machine for good.",[26,27,29],"h2",{"id":28},"what-format-does-bilibili-actually-use","What Format Does Bilibili Actually Use?",[11,31,32,33,37],{},"Bilibili migrated from Flash to HTML5 video in 2019, and most content is now delivered via ",[34,35,36],"strong",{},"DASH (Dynamic Adaptive Streaming over HTTP)",", which means:",[39,40,41,48,55],"ul",{},[42,43,44,45],"li",{},"Video and audio tracks are transmitted as ",[34,46,47],{},"independent streams",[42,49,50,51,54],{},"Each track is chopped into hundreds of small ",[18,52,53],{},".m4s"," segments",[42,56,57],{},"A central MPD manifest file describes where everything is",[11,59,60,61,64],{},"If you open DevTools on a Bilibili page and look at the Network panel, you'll typically see a JSON API response containing an MPD URL or a list of segment URLs — not a direct ",[18,62,63],{},".mp4"," link. That JSON response is what the player uses to construct the DASH stream.",[11,66,67,70,71,74,75,78],{},[34,68,69],{},"Livestreams"," (",[18,72,73],{},"live.bilibili.com",") switch to ",[34,76,77],{},"HLS\u002FM3U8"," instead of DASH, using an entirely different delivery pipeline.",[26,80,82],{"id":81},"anime-vs-creator-uploads-format-differences","Anime vs. Creator Uploads: Format Differences",[11,84,85,86,89,90,93],{},"It's worth noting: Bilibili content isn't monolithic. ",[34,87,88],{},"Regular creator uploads"," and ",[34,91,92],{},"anime\u002Fpremium content"," use different backend distribution logic:",[95,96,97,113],"table",{},[98,99,100],"thead",{},[101,102,103,107,110],"tr",{},[104,105,106],"th",{},"Content Type",[104,108,109],{},"Delivery Format",[104,111,112],{},"Notes",[114,115,116,130,142,153,166],"tbody",{},[101,117,118,121,127],{},[119,120,88],"td",{},[119,122,123,124,126],{},"DASH (",[18,125,53],{},")",[119,128,129],{},"Most everyday videos",[101,131,132,135,139],{},[119,133,134],{},"Anime episodes",[119,136,123,137,126],{},[18,138,53],{},[119,140,141],{},"Login required, some require premium",[101,143,144,147,150],{},[119,145,146],{},"Interactive videos",[119,148,149],{},"DASH + special branching logic",[119,151,152],{},"FlowPick captures the played branch",[101,154,155,157,163],{},[119,156,69],{},[119,158,159,160,126],{},"HLS (",[18,161,162],{},".m3u8",[119,164,165],{},"Completely different pipeline",[101,167,168,171,175],{},[119,169,170],{},"Livestream replays",[119,172,123,173,126],{},[18,174,53],{},[119,176,177],{},"Converts to static stream after broadcast ends",[11,179,180],{},"FlowPick handles all of these, but the workflow rhythm differs slightly — the main difference is that anime has stricter CDN signature tokens with shorter validity windows, so you want to complete the download in one go.",[26,182,184],{"id":183},"quality-tier-breakdown","Quality Tier Breakdown",[11,186,187],{},"Bilibili's quality tiers can be confusing because some resolutions require login and some require a premium membership:",[95,189,190,200],{},[98,191,192],{},[101,193,194,197],{},[104,195,196],{},"Resolution",[104,198,199],{},"Requirement",[114,201,202,210,218,225,232,242,251],{},[101,203,204,207],{},[119,205,206],{},"360P",[119,208,209],{},"No account needed",[101,211,212,215],{},[119,213,214],{},"480P",[119,216,217],{},"Free account (logged in)",[101,219,220,223],{},[119,221,222],{},"720P",[119,224,217],{},[101,226,227,230],{},[119,228,229],{},"1080P",[119,231,217],{},[101,233,234,237],{},[119,235,236],{},"1080P+ \u002F 60fps",[119,238,239],{},[34,240,241],{},"Premium membership",[101,243,244,247],{},[119,245,246],{},"4K \u002F HDR",[119,248,249],{},[34,250,241],{},[101,252,253,256],{},[119,254,255],{},"Dolby Vision",[119,257,258],{},[34,259,241],{},[11,261,262],{},"FlowPick captures whatever the player is actually delivering to you. If you have a premium membership, the player loads high-bitrate streams, and FlowPick sees those. Free accounts top out at standard 1080P.",[26,264,266],{"id":265},"step-by-step-downloading-bilibili-videos","Step-by-Step: Downloading Bilibili Videos",[268,269,271],"h3",{"id":270},"step-1-install-flowpick","Step 1: Install FlowPick",[11,273,274,275,282,283,288],{},"Install from the ",[276,277,281],"a",{"href":278,"rel":279},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Fflowpick-media-sniffer-do\u002Fmfinfkkabangbkanlfhhbokgfekjklea",[280],"nofollow","Chrome Web Store"," or ",[276,284,287],{"href":285,"rel":286},"https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fflowpick-media-sniffer-\u002Fegbfhgcifljmeaomlbhggplohemjombb",[280],"Edge Add-ons",". One click, no registration.",[11,290,291],{},"If you're already logged into Bilibili, stay logged in — FlowPick needs that to access the quality tiers tied to your account.",[268,293,295],{"id":294},"step-2-open-the-video-and-start-playing","Step 2: Open the Video and Start Playing",[11,297,298,299,302,303,306],{},"Go to ",[18,300,301],{},"bilibili.com\u002Fvideo\u002FBVxxxx"," (any video page). The video must ",[34,304,305],{},"actually start playing",", not just load the page. If autoplay is off, click the play button.",[11,308,309],{},"This matters: the Bilibili player doesn't request the DASH manifest until playback begins. FlowPick is waiting for that request.",[268,311,313],{"id":312},"step-3-open-the-flowpick-popup","Step 3: Open the FlowPick Popup",[11,315,316],{},"Click the FlowPick icon in your browser toolbar. The badge number shows how many streams were detected. On Bilibili, you'll typically see:",[39,318,319,322,325],{},[42,320,321],{},"The main video, shown as a DASH\u002FMPD entry (may have multiple quality levels)",[42,323,324],{},"A separate audio-only entry",[42,326,327],{},"Sometimes ad streams (smaller file sizes — ignore those)",[11,329,330],{},[331,332],"img",{"alt":333,"src":334},"FlowPick detecting DASH streams on Bilibili","\u002Fscreenshots\u002Fdash-detection.png",[268,336,338],{"id":337},"step-4-select-the-video-entry","Step 4: Select the Video Entry",[11,340,341],{},"Click the DASH entry that corresponds to your video (look for the one with the larger estimated file size — that's the actual content, not a 30-second pre-roll ad).",[11,343,344],{},"FlowPick parses the DASH manifest and shows all available quality levels. Pick the resolution you want.",[11,346,347],{},[331,348],{"alt":349,"src":350},"FlowPick selecting Bilibili video quality","\u002Fscreenshots\u002Fquality-selector.png",[268,352,354],{"id":353},"step-5-name-and-download","Step 5: Name and Download",[11,356,357,358,361],{},"Give the file a name, set the thread count (default is 2; 4-6 is fine for typical broadband — no need to max it out), and click ",[34,359,360],{},"Pick",".",[11,363,364],{},"FlowPick will then:",[366,367,368,371,374],"ol",{},[42,369,370],{},"Download video and audio segments in parallel",[42,372,373],{},"Merge audio and video using FFmpeg WebAssembly running inside the browser",[42,375,376],{},"Save the merged MP4 to your downloads folder",[11,378,379],{},"On typical broadband, a 20-minute 1080P video usually takes 2-4 minutes.",[268,381,383],{"id":382},"step-6-confirm-download-complete","Step 6: Confirm Download Complete",[11,385,386],{},"The FlowPick popup shows download progress. Once done, the file is in your browser's default download directory, ready to play in any player.",[11,388,389],{},[331,390],{"alt":391,"src":392},"FlowPick download progress display","\u002Fscreenshots\u002Fdownload-progress.png",[26,394,396],{"id":395},"handling-multi-part-long-videos","Handling Multi-Part Long Videos",[11,398,399],{},"Bilibili lets creators split long videos into multiple \"parts.\" A 3-hour documentary might be uploaded as P1, P2, P3, displayed as a playlist on the page.",[11,401,402],{},"Each part is an independent DASH stream. You need to:",[366,404,405,408,411],{},[42,406,407],{},"Play P1, download with FlowPick",[42,409,410],{},"Switch to P2 (or click the part in the sidebar), play, download",[42,412,413],{},"Repeat for remaining parts",[11,415,416],{},"If you want to merge them into one file, use any video editor or ffmpeg afterwards:",[418,419,424],"pre",{"className":420,"code":421,"language":422,"meta":423,"style":423},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ffmpeg -f concat -safe 0 -i filelist.txt -c copy combined.mp4\n","bash","",[18,425,426],{"__ignoreMap":423},[427,428,431,435,439,442,445,449,452,455,458,461],"span",{"class":429,"line":430},"line",1,[427,432,434],{"class":433},"sBMFI","ffmpeg",[427,436,438],{"class":437},"sfazB"," -f",[427,440,441],{"class":437}," concat",[427,443,444],{"class":437}," -safe",[427,446,448],{"class":447},"sbssI"," 0",[427,450,451],{"class":437}," -i",[427,453,454],{"class":437}," filelist.txt",[427,456,457],{"class":437}," -c",[427,459,460],{"class":437}," copy",[427,462,463],{"class":437}," combined.mp4\n",[11,465,466,467,470],{},"Where ",[18,468,469],{},"filelist.txt"," contains:",[418,472,477],{"className":473,"code":475,"language":476},[474],"language-text","file 'part1.mp4'\nfile 'part2.mp4'\nfile 'part3.mp4'\n","text",[18,478,475],{"__ignoreMap":423},[26,480,482],{"id":481},"downloading-bilibili-livestreams","Downloading Bilibili Livestreams",[11,484,485,486,488],{},"Livestreams on ",[18,487,73],{}," use HLS instead of DASH. The process is similar but with key differences:",[39,490,491,497,503],{},[42,492,493,496],{},[34,494,495],{},"You can only record from the moment you start."," No rewind — if you missed the first 30 minutes, those segments are already gone from the CDN.",[42,498,499,502],{},[34,500,501],{},"Stream URLs expire quickly"," — typically 30-60 minutes. A download that times out may fail mid-way.",[42,504,505,508],{},[34,506,507],{},"Prefer replay URLs."," If the streamer has replays enabled, the replay becomes a static DASH stream (not live HLS) and can be cleanly downloaded after the broadcast ends.",[11,510,511],{},"Livestream capture tip: start FlowPick early. Don't wait until something exciting happens.",[26,513,515],{"id":514},"anime-download-notes","Anime Download Notes",[11,517,518],{},"Anime CDN tokens typically have shorter validity windows than regular uploads (user reports suggest under 2 hours) and may be IP-bound. A few tips:",[39,520,521,527,533],{},[42,522,523,526],{},[34,524,525],{},"Don't switch networks mid-download"," (e.g., from WiFi to mobile hotspot) — it'll break token validation",[42,528,529,532],{},[34,530,531],{},"Don't leave a download task hanging."," A 20-minute anime episode usually downloads in 2-3 minutes. Leaving it unattended for hours and coming back — it's probably failed",[42,534,535],{},"If a download fails, just refresh the page, re-detect, and start a fresh download",[26,537,539],{"id":538},"common-issues","Common Issues",[268,541,543],{"id":542},"_0-streams-detected","\"0 streams detected\"",[11,545,546],{},"Most likely the video hasn't started yet. Try:",[39,548,549,552,555],{},[42,550,551],{},"Manually pressing play",[42,553,554],{},"Waiting for the first 5 seconds of buffering",[42,556,557],{},"Refreshing the page (player initialization state sometimes expires)",[11,559,560],{},"Still nothing: Bilibili occasionally wraps the player in an iframe. Right-click the video → \"Open frame in new tab\" → try FlowPick there.",[268,562,564],{"id":563},"download-stalls-at-70-80","Download stalls at 70-80%",[11,566,567],{},"Stream URLs have expired. Bilibili CDN signed URLs are typically valid for 6 hours; paid content may be shorter. Reload the page, re-detect, start a fresh download. Don't start a download and leave it unattended for long periods.",[268,569,571],{"id":570},"output-file-has-no-audio","Output file has no audio",[11,573,574],{},"The audio stream wasn't captured. Usually happens when:",[39,576,577,580],{},[42,578,579],{},"The video auto-advanced to the next part",[42,581,582],{},"A popup or ad interrupted audio stream initialization",[11,584,585],{},"Reload, play from the beginning (not muted), re-detect before downloading.",[268,587,589,590,592],{"id":588},"output-is-in-blv-format","Output is in ",[18,591,20],{}," format",[11,594,595],{},"That's not FlowPick — you accidentally used the official Bilibili app's \"cache\" feature. Make sure you're using the browser extension on the web player, not the app.",[268,597,599],{"id":598},"only-getting-360p-despite-having-premium","Only getting 360P despite having premium",[11,601,602],{},"FlowPick captures whatever stream the player actually requests. If the page shows 360P, the player chose 360P — click the quality switcher in the player, manually switch to a higher quality, then re-detect.",[26,604,606],{"id":605},"large-file-downloads","Large File Downloads",[11,608,609],{},"Bilibili 4K videos can reach several GB. FlowPick uses the browser's File System Access API for streaming writes, with no file size limit. Memory usage stays stable throughout the download — the browser won't freeze just because the file is large.",[11,611,612],{},"Use Chrome or Edge for large file downloads — these two browsers have the most complete FSA streaming write support.",[26,614,616],{"id":615},"legal-note","Legal Note",[11,618,619],{},"FlowPick captures the video your browser is already rendering. Bilibili's terms of service restrict redistribution of downloaded content. In jurisdictions where it's permitted, downloading for personal offline viewing exists in a gray area — check your local laws. Don't redistribute content you didn't create.",[621,622],"hr",{},[26,624,626],{"id":625},"recommended-reading","Recommended Reading",[39,628,629],{},[42,630,631,637],{},[34,632,633],{},[276,634,636],{"href":635},"\u002Fblog\u002Fflowpick-vs-video-downloadhelper","FlowPick vs. Video DownloadHelper"," — tool comparison for DASH-heavy platforms like Bilibili",[639,640,641],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":423,"searchDepth":643,"depth":643,"links":644},2,[645,646,647,648,657,658,659,660,668,669,670],{"id":28,"depth":643,"text":29},{"id":81,"depth":643,"text":82},{"id":183,"depth":643,"text":184},{"id":265,"depth":643,"text":266,"children":649},[650,652,653,654,655,656],{"id":270,"depth":651,"text":271},3,{"id":294,"depth":651,"text":295},{"id":312,"depth":651,"text":313},{"id":337,"depth":651,"text":338},{"id":353,"depth":651,"text":354},{"id":382,"depth":651,"text":383},{"id":395,"depth":643,"text":396},{"id":481,"depth":643,"text":482},{"id":514,"depth":643,"text":515},{"id":538,"depth":643,"text":539,"children":661},[662,663,664,665,667],{"id":542,"depth":651,"text":543},{"id":563,"depth":651,"text":564},{"id":570,"depth":651,"text":571},{"id":588,"depth":651,"text":666},"Output is in .blv format",{"id":598,"depth":651,"text":599},{"id":605,"depth":643,"text":606},{"id":615,"depth":643,"text":616},{"id":625,"depth":643,"text":626},"tutorials","2026-07-01","A complete tutorial on downloading Bilibili videos using the FlowPick browser extension, supporting HLS livestreams, DASH videos, and regular MP4 content.","md","2026-08-27",{},true,"\u002Fblog\u002Fhow-to-download-bilibili-videos",11,{"title":5,"description":673},"blog\u002Fhow-to-download-bilibili-videos",[683,684,685,686,687],"bilibili","video download","hls","dash","tutorial","QRlddRh6QCrXWT1KJEwW_-3Mp1gvuxIuiYQV325P0C4",[690,697],{"title":691,"path":692,"stem":693,"description":694,"date":695,"category":696,"children":-1},"How FlowPick Merges Hundreds of Video Segments into MP4 in the Browser","\u002Fblog\u002Fhow-flowpick-merges-video-segments-in-browser","blog\u002Fhow-flowpick-merges-video-segments-in-browser","No server, no FFmpeg install, no transcoding — a full technical breakdown of how FlowPick handles HLS\u002FDASH segment merging entirely within a browser tab.","2026-07-02","tips",{"title":698,"path":699,"stem":700,"description":701,"date":702,"category":671,"children":-1},"How to Download a Video from a Direct URL","\u002Fblog\u002Fhow-to-download-direct-mp4-video","blog\u002Fhow-to-download-direct-mp4-video","Learn how to identify MP4 and WebM direct links, grab them with FlowPick in one click, and fix the most common failures: 403, 404, CORS, and incomplete files.","2026-08-18",1788792287583]