[{"data":1,"prerenderedAt":1066},["ShallowReactive",2],{"blog-en-is-it-legal-to-download-streaming-video":3,"blog-en-is-it-legal-to-download-streaming-video-surround":1053},{"id":4,"title":5,"author":6,"body":7,"category":1034,"date":1035,"description":1036,"extension":1037,"image":1038,"lastModified":1035,"meta":1039,"navigation":1040,"path":1041,"readingTime":1042,"seo":1043,"stem":1044,"tags":1045,"__hash__":1052},"blog\u002Fblog\u002Fis-it-legal-to-download-streaming-video.md","Is It Legal to Download Streaming Video? A Technical and Legal Checklist","FlowPick Team",{"type":8,"value":9,"toc":1007},"minimark",[10,14,17,20,25,28,33,36,47,68,71,110,123,130,134,156,163,167,178,348,355,359,362,375,378,382,394,398,402,405,411,414,424,432,438,442,448,454,459,470,475,479,489,495,498,502,508,514,517,521,527,531,534,559,563,566,571,591,596,612,615,621,625,631,637,643,649,659,665,671,677,683,687,690,752,755,759,762,765,779,785,789,792,812,816,819,833,836,840,891,895,909,912,928,931,935,971,975,1003],[11,12,13],"p",{},"Every few weeks someone emails FlowPick support asking why we don't add Netflix\u002FDisney+\u002FHBO Max support. The short answer is: because it's illegal in basically every jurisdiction, and the technical signal that tells you \"this is DRM-protected\" is right there in the manifest.",[11,15,16],{},"This article is the long answer. It's not \"consult a lawyer\" hand-waving — it's the actual technical signals you can check, the actual laws that apply, and the practical decisions we make about what FlowPick will and won't touch.",[11,18,19],{},"I'm a developer, not a lawyer. This is general guidance based on how the laws actually work in 2026, not legal advice for your specific case.",[21,22,24],"h2",{"id":23},"the-technical-signals","The technical signals",[11,26,27],{},"Before any legal question, there are technical signals that tell you what kind of content you're dealing with. Check these in your browser's DevTools network tab.",[29,30,32],"h3",{"id":31},"signal-1-drm-markers-in-the-manifest","Signal 1: DRM markers in the manifest",[11,34,35],{},"For HLS:",[37,38,43],"pre",{"className":39,"code":41,"language":42},[40],"language-text","#EXT-X-KEY:METHOD=SAMPLE-AES,URI=\"skd:\u002F\u002Fdrm.example.com\u002Fkey\"\n","text",[44,45,41],"code",{"__ignoreMap":46},"",[11,48,49,52,53,56,57,60,61,63,64,67],{},[44,50,51],{},"METHOD=SAMPLE-AES"," (not ",[44,54,55],{},"AES-128",") means FairPlay DRM. The ",[44,58,59],{},"skd:\u002F\u002F"," URI scheme is the giveaway — that's Apple's FairPlay key URL scheme. Real ",[44,62,55],{}," uses ",[44,65,66],{},"https:\u002F\u002F"," and returns a raw 16-byte key.",[11,69,70],{},"For DASH:",[37,72,76],{"className":73,"code":74,"language":75,"meta":46,"style":46},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CContentProtection\n  schemeIdUri=\"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n  value=\"Widevine\">\n  \u003Ccenc:pssh>...\u003C\u002Fcenc:pssh>\n\u003C\u002FContentProtection>\n","xml",[44,77,78,86,92,98,104],{"__ignoreMap":46},[79,80,83],"span",{"class":81,"line":82},"line",1,[79,84,85],{},"\u003CContentProtection\n",[79,87,89],{"class":81,"line":88},2,[79,90,91],{},"  schemeIdUri=\"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n",[79,93,95],{"class":81,"line":94},3,[79,96,97],{},"  value=\"Widevine\">\n",[79,99,101],{"class":81,"line":100},4,[79,102,103],{},"  \u003Ccenc:pssh>...\u003C\u002Fcenc:pssh>\n",[79,105,107],{"class":81,"line":106},5,[79,108,109],{},"\u003C\u002FContentProtection>\n",[11,111,112,113,118,119,122],{},"The UUIDs identify the DRM system (see the ",[114,115,117],"a",{"href":116},"\u002Fblog\u002Fdash-mpd-deep-dive-segmenttemplate-contentprotection","DASH deep dive"," for the full list). If ",[44,120,121],{},"ContentProtection"," is present with a recognized DRM system UUID, the content is DRM-protected.",[11,124,125,129],{},[126,127,128],"strong",{},"If you see these signals, downloading is illegal in most jurisdictions"," — see the legal section below.",[29,131,133],{"id":132},"signal-2-http-headers","Signal 2: HTTP headers",[37,135,139],{"className":136,"code":137,"language":138,"meta":46,"style":46},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Content-Protection: drm\nContent-Protection-System: Widevine\nX-Licence-Url: https:\u002F\u002Fdrm.example.com\u002Flicence\n","http",[44,140,141,146,151],{"__ignoreMap":46},[79,142,143],{"class":81,"line":82},[79,144,145],{},"Content-Protection: drm\n",[79,147,148],{"class":81,"line":88},[79,149,150],{},"Content-Protection-System: Widevine\n",[79,152,153],{"class":81,"line":94},[79,154,155],{},"X-Licence-Url: https:\u002F\u002Fdrm.example.com\u002Flicence\n",[11,157,158,159,162],{},"Some platforms add proprietary headers. Not standardized, but if you see ",[44,160,161],{},"Content-Protection"," or similar, treat the content as DRM-protected.",[29,164,166],{"id":165},"signal-3-eme-in-the-page","Signal 3: EME in the page",[11,168,169,170,173,174,177],{},"Open DevTools, search for ",[44,171,172],{},"MediaKeys"," or ",[44,175,176],{},"encrypted"," in the console:",[37,179,183],{"className":180,"code":181,"language":182,"meta":46,"style":46},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F In the page's console:\nconst videos = document.querySelectorAll('video')\nvideos.forEach(v => {\n  v.mediaKeys ? console.log('DRM-protected') : console.log('No DRM')\n  v.onencrypted = () => console.log('Encrypted event fired')\n})\n","js",[44,184,185,191,230,252,306,340],{"__ignoreMap":46},[79,186,187],{"class":81,"line":82},[79,188,190],{"class":189},"sHwdD","\u002F\u002F In the page's console:\n",[79,192,193,197,201,205,208,211,215,218,221,225,227],{"class":81,"line":88},[79,194,196],{"class":195},"spNyl","const",[79,198,200],{"class":199},"sTEyZ"," videos ",[79,202,204],{"class":203},"sMK4o","=",[79,206,207],{"class":199}," document",[79,209,210],{"class":203},".",[79,212,214],{"class":213},"s2Zo4","querySelectorAll",[79,216,217],{"class":199},"(",[79,219,220],{"class":203},"'",[79,222,224],{"class":223},"sfazB","video",[79,226,220],{"class":203},[79,228,229],{"class":199},")\n",[79,231,232,235,237,240,242,246,249],{"class":81,"line":94},[79,233,234],{"class":199},"videos",[79,236,210],{"class":203},[79,238,239],{"class":213},"forEach",[79,241,217],{"class":199},[79,243,245],{"class":244},"sHdIc","v",[79,247,248],{"class":195}," =>",[79,250,251],{"class":203}," {\n",[79,253,254,257,259,262,265,268,270,273,276,278,281,283,286,289,291,293,295,297,299,302,304],{"class":81,"line":100},[79,255,256],{"class":199},"  v",[79,258,210],{"class":203},[79,260,261],{"class":199},"mediaKeys",[79,263,264],{"class":203}," ?",[79,266,267],{"class":199}," console",[79,269,210],{"class":203},[79,271,272],{"class":213},"log",[79,274,217],{"class":275},"swJcz",[79,277,220],{"class":203},[79,279,280],{"class":223},"DRM-protected",[79,282,220],{"class":203},[79,284,285],{"class":275},") ",[79,287,288],{"class":203},":",[79,290,267],{"class":199},[79,292,210],{"class":203},[79,294,272],{"class":213},[79,296,217],{"class":275},[79,298,220],{"class":203},[79,300,301],{"class":223},"No DRM",[79,303,220],{"class":203},[79,305,229],{"class":275},[79,307,308,310,312,315,318,321,323,325,327,329,331,333,336,338],{"class":81,"line":106},[79,309,256],{"class":199},[79,311,210],{"class":203},[79,313,314],{"class":213},"onencrypted",[79,316,317],{"class":203}," =",[79,319,320],{"class":203}," ()",[79,322,248],{"class":195},[79,324,267],{"class":199},[79,326,210],{"class":203},[79,328,272],{"class":213},[79,330,217],{"class":275},[79,332,220],{"class":203},[79,334,335],{"class":223},"Encrypted event fired",[79,337,220],{"class":203},[79,339,229],{"class":275},[79,341,343,346],{"class":81,"line":342},6,[79,344,345],{"class":203},"}",[79,347,229],{"class":199},[11,349,350,351,354],{},"If ",[44,352,353],{},"video.mediaKeys"," is non-null, the page is using Encrypted Media Extensions — i.e., DRM.",[29,356,358],{"id":357},"signal-4-terms-of-service","Signal 4: Terms of Service",[11,360,361],{},"Most platforms' ToS explicitly prohibit download. The signal isn't technical, but it matters legally. Examples:",[363,364,365,369,372],"ul",{},[366,367,368],"li",{},"YouTube ToS: \"You shall not download any Content unless you see a 'download' or similar link displayed by YouTube.\"",[366,370,371],{},"Netflix ToS: \"You may not... download, copy or otherwise capture any of the Content.\"",[366,373,374],{},"Vimeo ToS: Prohibits download unless explicitly enabled by the uploader.",[11,376,377],{},"Even without DRM, ToS violations can be breach of contract.",[29,379,381],{"id":380},"signal-5-drm-absence-doesnt-mean-allowed","Signal 5: DRM absence doesn't mean \"allowed\"",[11,383,384,385,389,390,393],{},"A stream can be unencrypted and still copyrighted. The technical absence of DRM means you ",[386,387,388],"em",{},"can"," download it; it doesn't mean you ",[386,391,392],{},"may",". More on this in the legal section.",[21,395,397],{"id":396},"the-legal-frameworks","The legal frameworks",[29,399,401],{"id":400},"united-states","United States",[11,403,404],{},"Two relevant statutes:",[11,406,407,410],{},[126,408,409],{},"DMCA §1201 (Anti-Circumvention)"," — Makes it illegal to circumvent technological protection measures. If content is DRM-protected, downloading it (which requires breaking the DRM) is illegal even if you have a valid subscription. Penalties: $200-$2,500 per violation for individuals, up to $1M for commercial.",[11,412,413],{},"This is the big one. DMCA §1201 doesn't care about fair use, doesn't care if you bought the content, doesn't care if it's for personal use. If you break DRM, you've broken the law. Courts have repeatedly upheld this.",[11,415,416,419,420,423],{},[126,417,418],{},"Copyright Act §106"," — Gives the copyright holder exclusive rights to reproduce, distribute, etc. Downloading is reproduction. Whether it's ",[386,421,422],{},"infringement"," depends on:",[363,425,426,429],{},[366,427,428],{},"Fair use (§107) — transformative, non-commercial, factual vs. creative, market effect",[366,430,431],{},"Whether you have a license (e.g., a subscription might or might not include download rights — check ToS)",[11,433,434,437],{},[126,435,436],{},"Practical rule:"," Non-DRM content + personal use + you have legitimate access = usually fine. DRM content = illegal regardless of use.",[29,439,441],{"id":440},"european-union","European Union",[11,443,444,447],{},[126,445,446],{},"InfoSoc Directive (2001\u002F29\u002FEC), Article 6"," — Similar to DMCA §1201. Anti-circumvention of technological protection measures. Member states implement it differently but the substance is the same.",[11,449,450,453],{},[126,451,452],{},"DSM Directive (2019\u002F790), Article 17"," — Platforms' liability for user-uploaded content. Doesn't directly address download but affects the broader ecosystem.",[11,455,456],{},[126,457,458],{},"Country-specific quirks:",[363,460,461,464,467],{},[366,462,463],{},"Germany: Personal copies of \"obviously illegal\" sources are themselves illegal (§53 UrhG). What counts as \"obviously illegal\" is contested.",[366,465,466],{},"France: Hadopi\u002FHADOPI law — graduated response for copyright infringement. Three strikes, then fines and disconnection.",[366,468,469],{},"UK: Similar to EU but with some differences post-Brexit; CDPA 1988 + amendments.",[11,471,472,474],{},[126,473,436],{}," Same as US. DRM = illegal. Non-DRM for personal use = usually fine but country-specific.",[29,476,478],{"id":477},"japan","Japan",[11,480,481,484,485,488],{},[126,482,483],{},"Copyright Act Article 30"," — Personal use copies are allowed, ",[126,486,487],{},"but"," \"in cases where the copy is made knowing that the reproduction would unjustly harm the interests of the copyright holder.\" Translation: downloading from a legitimate source is fine; downloading from a pirate source is not.",[11,490,491,494],{},[126,492,493],{},"Article 120-2"," — Makes downloading illegally distributed content a criminal offense. Japan is stricter than most — penalties can include imprisonment.",[11,496,497],{},"DRM circumvention is also illegal under the Unfair Competition Prevention Act.",[29,499,501],{"id":500},"china","China",[11,503,504,507],{},[126,505,506],{},"Copyright Law Article 10"," — Reproduction rights. Personal use exemption in Article 22 is narrow.",[11,509,510,513],{},[126,511,512],{},"Regulations on the Protection of the Right of Communication through Information Networks (2006)"," — Implementations of WIPO Internet Treaties. Anti-circumvention provisions.",[11,515,516],{},"In practice: enforcement is selective. Bilibili and iQiyi streams are unencrypted and routinely downloaded by Chinese users; legal action against individual downloaders is rare. Companies occasionally target toolmakers.",[29,518,520],{"id":519},"korea","Korea",[11,522,523,526],{},[126,524,525],{},"Copyright Act Article 30-2"," — Personal use allowed for \"small\" amounts of copyrighted works. Distribution of circumvention tools is illegal (Article 124).",[29,528,530],{"id":529},"practical-summary","Practical summary",[11,532,533],{},"In every major jurisdiction:",[363,535,536,542,548,554],{},[366,537,538,541],{},[126,539,540],{},"DRM-protected content",": illegal to download, full stop.",[366,543,544,547],{},[126,545,546],{},"Non-DRM content for personal use, with legitimate access",": generally fine, with country-specific quirks.",[366,549,550,553],{},[126,551,552],{},"Non-DRM content for redistribution",": illegal everywhere.",[366,555,556,553],{},[126,557,558],{},"Distributing circumvention tools",[21,560,562],{"id":561},"where-flowpick-draws-the-line","Where FlowPick draws the line",[11,564,565],{},"FlowPick's policy, which I think is the right one for any download tool:",[11,567,568],{},[126,569,570],{},"Will download:",[363,572,573,579,585,588],{},[366,574,575,576],{},"HLS streams without ",[44,577,578],{},"EXT-X-KEY:METHOD=SAMPLE-AES",[366,580,581,582,584],{},"DASH streams without ",[44,583,121],{}," for known DRM systems",[366,586,587],{},"Direct video file URLs (MP4, WebM, etc.)",[366,589,590],{},"Audio and image resources",[11,592,593],{},[126,594,595],{},"Refuses to download:",[363,597,598,603,609],{},[366,599,600,601],{},"HLS with ",[44,602,51],{},[366,604,605,606,608],{},"DASH with ",[44,607,121],{}," referencing Widevine\u002FPlayReady\u002FFairPlay",[366,610,611],{},"Anything where the EME API is actively encrypting the stream",[11,613,614],{},"The refusal isn't a \"we couldn't figure it out\" — it's an explicit policy. FlowPick's detection code parses these signals and intentionally fails on them. This is why \"FlowPick can't download this\" is a feature, not a bug.",[11,616,617,620],{},[126,618,619],{},"Original opinion:"," A download tool that promises to handle \"any site\" is either lying or breaking the law. The honest position is: \"we can download anything that's not DRM-protected, and we won't even try on DRM.\" Tools that claim otherwise are either scams, malware, or operating in legal grey areas that will get shut down.",[21,622,624],{"id":623},"specific-platform-guide","Specific platform guide",[11,626,627,630],{},[126,628,629],{},"YouTube",": Mostly non-DRM. ToS prohibits download, but the technical signal is absent. Many users download YouTube for offline viewing, archival, etc. FlowPick handles YouTube (when the page is loaded in the browser). Courts have ruled both ways on whether YouTube downloading is fair use — generally, personal\u002Fnon-commercial use is tolerated.",[11,632,633,636],{},[126,634,635],{},"Netflix, Disney+, HBO Max, Apple TV+",": All DRM-protected (Widevine\u002FPlayReady\u002FFairPlay, depending on platform). Downloading is illegal under DMCA §1201 and equivalents. FlowPick refuses.",[11,638,639,642],{},[126,640,641],{},"Vimeo",": Varies by video. Some videos have a \"Download\" button enabled by the uploader — those are fine. Others don't — ToS prohibits download.",[11,644,645,648],{},[126,646,647],{},"Twitch VODs",": Mostly non-DRM. ToS prohibits download but enforcement is rare for personal use.",[11,650,651,654,655,210],{},[126,652,653],{},"Bilibili",": Mostly non-DRM. ToS prohibits download but the platform is permissive in practice. FlowPick handles Bilibili — see ",[114,656,658],{"href":657},"\u002Fblog\u002Fhow-to-download-bilibili-videos","the Bilibili tutorial",[11,660,661,664],{},[126,662,663],{},"Udemy, Coursera, edX (paid courses)",": Mixed. DRM-protected courses are off-limits. Non-DRM courses you've paid for are technically a ToS violation but legally defensible under personal use.",[11,666,667,670],{},[126,668,669],{},"Patreon",": Mostly non-DRM. You paid for access; downloading for personal use is generally fine.",[11,672,673,676],{},[126,674,675],{},"Corporate LMS (proprietary training videos)",": Often non-DRM technically, but ToS violations and employment consequences are the real risk. If it's your employer's content, check with them.",[11,678,679,682],{},[126,680,681],{},"Pornhub, OnlyFans",": ToS prohibits download. DRM varies. OnlyFans specifically has pursued legal action against download tool operators.",[21,684,686],{"id":685},"technical-checklist-before-you-download","Technical checklist before you download",[11,688,689],{},"If you're not sure whether a stream is OK to download, here's the checklist:",[691,692,693,710,720,730,736,746],"ol",{},[366,694,695,698,699,702,703,706,707,210],{},[126,696,697],{},"Open DevTools → Network tab."," Filter by ",[44,700,701],{},"m3u8",", ",[44,704,705],{},"mpd",", or ",[44,708,709],{},"mp4",[366,711,712,715,716,719],{},[126,713,714],{},"If HLS:"," Check for ",[44,717,718],{},"#EXT-X-KEY:METHOD=SAMPLE-AES",". If present, stop — DRM-protected.",[366,721,722,725,726,729],{},[126,723,724],{},"If DASH:"," Fetch the MPD. Look for ",[44,727,728],{},"\u003CContentProtection>"," with a recognized DRM UUID. If present, stop.",[366,731,732,735],{},[126,733,734],{},"If neither (direct MP4):"," No DRM signal possible. Content is technically downloadable.",[366,737,738,741,742,745],{},[126,739,740],{},"Check ToS."," Search \"",[79,743,744],{},"platform name"," terms of service download.\" If ToS explicitly prohibits, that's a ToS violation even without legal infringement.",[366,747,748,751],{},[126,749,750],{},"Consider the use case."," Personal offline viewing of content you have legitimate access to is generally fine. Redistribution is not.",[11,753,754],{},"FlowPick automates steps 1-4. Steps 5-6 are on you.",[21,756,758],{"id":757},"what-about-fair-use","What about fair use?",[11,760,761],{},"Fair use (US) and equivalents elsewhere allow copyrighted content use without permission for specific purposes: commentary, criticism, news reporting, scholarship, research.",[11,763,764],{},"The four factors (17 U.S.C. §107):",[691,766,767,770,773,776],{},[366,768,769],{},"Purpose and character of use (commercial vs. nonprofit educational)",[366,771,772],{},"Nature of the copyrighted work",[366,774,775],{},"Amount and substantiality used",[366,777,778],{},"Effect on the potential market",[11,780,781,784],{},[126,782,783],{},"Practical reality:"," Fair use is an affirmative defense — you raise it after being sued, and a judge decides. It's not a \"get out of jail free\" card. For personal archival of content you've paid to access, fair use probably applies. For redistribution, it doesn't.",[21,786,788],{"id":787},"what-about-content-ive-paid-for","What about content I've paid for?",[11,790,791],{},"This is the most common \"but I bought it!\" question. The answer:",[363,793,794,800,806],{},[366,795,796,799],{},[126,797,798],{},"You bought a license, not the content."," Subscriptions grant access under specific terms. If the terms say \"no download,\" downloading is a breach of contract.",[366,801,802,805],{},[126,803,804],{},"DRM circumvention is illegal regardless of license."," Even if you have a valid Netflix subscription, breaking Widevine to download is illegal under DMCA §1201.",[366,807,808,811],{},[126,809,810],{},"Personal copies of non-DRM content are generally fine."," If you bought a movie on a non-DRM platform, downloading a backup is defensible.",[21,813,815],{"id":814},"when-to-actually-consult-a-lawyer","When to actually consult a lawyer",[11,817,818],{},"If you're:",[363,820,821,824,827,830],{},[366,822,823],{},"Operating a download service or tool (like FlowPick)",[366,825,826],{},"Distributing downloaded content publicly",[366,828,829],{},"Circumventing DRM for any reason",[366,831,832],{},"Unsure whether your use case is fair use",[11,834,835],{},"Then talk to a lawyer who specializes in copyright. This article covers general principles, not your specific situation.",[21,837,839],{"id":838},"references","References",[363,841,842,851,859,867,875,883],{},[366,843,844,850],{},[114,845,849],{"href":846,"rel":847},"https:\u002F\u002Fwww.law.cornell.edu\u002Fuscode\u002Ftext\u002F17\u002F1201",[848],"nofollow","DMCA §1201 — Anti-Circumvention"," — Full text",[366,852,853,858],{},[114,854,857],{"href":855,"rel":856},"https:\u002F\u002Feur-lex.europa.eu\u002Flegal-content\u002FEN\u002FTXT\u002F?uri=celex:32001L0029",[848],"EU InfoSoc Directive 2001\u002F29\u002FEC"," — EU anti-circumvention",[366,860,861,866],{},[114,862,865],{"href":863,"rel":864},"https:\u002F\u002Fwww.wipo.int\u002Ftreaties\u002Fen\u002Fip\u002Fwct\u002F",[848],"WIPO Copyright Treaty"," — International framework",[366,868,869,874],{},[114,870,873],{"href":871,"rel":872},"https:\u002F\u002Fwww.eff.org\u002Fissues\u002Fdmca-1201",[848],"Electronic Frontier Foundation — DMCA §1201 exemptions"," — EFF's tracker for the triennial exemption process",[366,876,877,882],{},[114,878,881],{"href":879,"rel":880},"https:\u002F\u002Fwww.youtube.com\u002Ft\u002Fterms",[848],"YouTube Terms of Service"," — Section 5C, download prohibition",[366,884,885,890],{},[114,886,889],{"href":887,"rel":888},"https:\u002F\u002Fhelp.netflix.com\u002Flegal\u002Ftermsofuse",[848],"Netflix Terms of Use"," — Section 4C",[21,892,894],{"id":893},"summary","Summary",[11,896,897,898,901,902,905,906,908],{},"The legal line for streaming video download is, in most jurisdictions: ",[126,899,900],{},"DRM = illegal, non-DRM for personal use = generally fine."," The technical signals that distinguish these are visible in the network tab — ",[44,903,904],{},"SAMPLE-AES"," in HLS, ",[44,907,121],{}," with a DRM UUID in DASH. If you see them, downloading requires circumvention, which is illegal.",[11,910,911],{},"FlowPick's policy: download anything that's not DRM-protected, refuse anything that is. This is the only honest position for a download tool. Tools that promise \"any site\" are either scams or breaking the law, and you shouldn't trust them with your data or your legal exposure.",[11,913,914,915,702,919,922,923,927],{},"For the technical side of what happens after you've confirmed content is downloadable, see the ",[114,916,918],{"href":917},"\u002Fblog\u002Fhls-m3u8-deep-dive-encryption-multitrack","HLS",[114,920,921],{"href":116},"DASH",", and ",[114,924,926],{"href":925},"\u002Fblog\u002Fbrowser-streaming-remux-mp4-isobmff","remux"," deep dives.",[929,930],"hr",{},[21,932,934],{"id":933},"related-articles","Related articles",[363,936,937,945,953,962],{},[366,938,939,944],{},[126,940,941],{},[114,942,943],{"href":917},"HLS Deep Dive: Encryption, Multi-Track, EXT-X Tags"," — How FlowPick detects SAMPLE-AES and why it refuses",[366,946,947,952],{},[126,948,949],{},[114,950,951],{"href":116},"DASH Deep Dive: SegmentTemplate, ContentProtection"," — How FlowPick parses ContentProtection tags",[366,954,955,961],{},[126,956,957],{},[114,958,960],{"href":959},"\u002Fdocs\u002Ffeatures\u002Fprivacy-security","FlowPick Privacy & Security Docs"," — FlowPick's full privacy stance, which complements the legal stance here",[366,963,964,970],{},[126,965,966],{},[114,967,969],{"href":968},"\u002Fblog\u002Fflowpick-vs-yt-dlp","FlowPick vs. yt-dlp"," — How both tools handle DRM (the same way: they don't)",[21,972,974],{"id":973},"recommended-reading","Recommended reading",[363,976,977,986,994],{},[366,978,979,985],{},[126,980,981],{},[114,982,984],{"href":983},"\u002Fblog\u002Fgetting-started-with-hls-m3u8-download","How to Download M3U8\u002FHLS Streams"," — The technical workflow for non-DRM HLS",[366,987,988,993],{},[126,989,990],{},[114,991,992],{"href":657},"How to Download Bilibili Videos"," — A specific non-DRM platform walkthrough",[366,995,996,1002],{},[126,997,998],{},[114,999,1001],{"href":1000},"\u002Fblog\u002Fhow-to-download-tiktok-twitter-videos","How to Download TikTok and Twitter\u002FX Videos"," — Another non-DRM platform walkthrough",[1004,1005,1006],"style",{},"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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":46,"searchDepth":88,"depth":88,"links":1008},[1009,1016,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033],{"id":23,"depth":88,"text":24,"children":1010},[1011,1012,1013,1014,1015],{"id":31,"depth":94,"text":32},{"id":132,"depth":94,"text":133},{"id":165,"depth":94,"text":166},{"id":357,"depth":94,"text":358},{"id":380,"depth":94,"text":381},{"id":396,"depth":88,"text":397,"children":1017},[1018,1019,1020,1021,1022,1023],{"id":400,"depth":94,"text":401},{"id":440,"depth":94,"text":441},{"id":477,"depth":94,"text":478},{"id":500,"depth":94,"text":501},{"id":519,"depth":94,"text":520},{"id":529,"depth":94,"text":530},{"id":561,"depth":88,"text":562},{"id":623,"depth":88,"text":624},{"id":685,"depth":88,"text":686},{"id":757,"depth":88,"text":758},{"id":787,"depth":88,"text":788},{"id":814,"depth":88,"text":815},{"id":838,"depth":88,"text":839},{"id":893,"depth":88,"text":894},{"id":933,"depth":88,"text":934},{"id":973,"depth":88,"text":974},"tips","2026-08-04","Not 'consult a lawyer' hand-waving — actual signals you can check in the network tab, the actual laws that matter in major jurisdictions, and where FlowPick draws the line.","md","\u002Fscreenshots\u002Fprivacy-security.png",{},true,"\u002Fblog\u002Fis-it-legal-to-download-streaming-video",14,{"title":5,"description":1036},"blog\u002Fis-it-legal-to-download-streaming-video",[1046,1047,1048,1049,1050,1051],"legal","drm","copyright","streaming","ethics","deep-dive","Ie81eTNN9a8lk2EzeIu6YMHd75nlVxaIRgZLiCZL4QM",[1054,1061],{"title":1055,"path":1056,"stem":1057,"description":1058,"date":1059,"category":1060,"children":-1},"How to Sniff and Download Audio from Any Website: Podcasts, BGM, Audiobooks","\u002Fblog\u002Fhow-to-sniff-and-download-audio-from-any-website","blog\u002Fhow-to-sniff-and-download-audio-from-any-website","A complete guide to sniffing and detecting web audio resources with FlowPick, covering direct MP3\u002FM4A links, HLS audio streams, batch podcast downloads, and audiobook grabbing.","2026-07-02","tutorials",{"title":1062,"path":1063,"stem":1064,"description":1065,"date":1035,"category":1034,"children":-1},"WebCodecs + Web Workers + OPFS: Practical Video Processing in the Browser","\u002Fblog\u002Fwebcodecs-web-workers-opfs-video-processing","blog\u002Fwebcodecs-web-workers-opfs-video-processing","A working example of using WebCodecs for hardware-accelerated video decode, Web Workers for parallel processing, and OPFS for high-throughput local file I\u002FO — with benchmarks against FFmpeg WASM.",1787670588904]