If anyone has linux or WSL they can do this in one line. It does not download poneb.in/u/ links (bottom of page) https://poneb.in/u/PonyPlotWorship curl -O `curl https://ponepaste.org/6509 | grep -o --extended-regexp -Z "((ponepaste.org\/)[0-9]{1,14})" | awk '!seen[$0]++' | cut -c 15-30 | sed 's|^|https://ponepaste.org/download/|' | sed -z "s/\n/ /g"` curl -O `curl https://ponepaste.org/6509 | grep -o --extended-regexp -Z "((poneb.in\/)[A-z0-9]{1,14})" | awk '!seen[$0]++' | cut -c 10-30 | sed 's|^|https://poneb.in/raw/|' | sed -z "s/\n/ /g"` First line is for ponepaste links second is for poneb.in links. What these commands do: curl -O: download one file per url `: everything in the ` will become a long list of urls (and is executed first before the curl at the start) curl https://ponepaste.org/6509: download the main archive page (this should actually be the /download/ page but the main page works) grep: find ponepaste.org lings with a 1-14 digit number (0-9) awk: remove duplicate urls cut: select just the id part of the line sed: add the download url sed again: replace the new line with a space " " for the opening curl command Each | character is its own command, you can start with the curl https://ponepaste.org/6509 and add on the next | portion of the command and see how it works. eg first curl https://ponepaste.org/6509 second curl https://ponepaste.org/6509 | grep -o --extended-regexp -Z "((ponepaste.org\/)[0-9]{1,14})" third curl https://ponepaste.org/6509 | grep -o --extended-regexp -Z "((ponepaste.org\/)[0-9]{1,14})" | awk '!seen[$0]++'