Chrome –headless can dump the dom to the command line. Set a virtual time budget in vms [?] for the js to settle down and then do stuff. Html() { chromium \ –headless \ –incognito \ –dump-dom \ –virtual-time-budget=999999 \ "$1" } HtmlToText() { lynx -stdin -dump -nolist } This has “peculiar” uses. Fun fact: invoking the name of chromium around normal people confers alien–like status. Html 'https://www.youtube.com/' | HtmlToText