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