sed 's|^http://|https://|' is the correct form, and the anchor is the important part.
Without the anchor you corrupt data
An unanchored s|http://|https://|g also rewrites URLs that appear inside other URLs โ redirect trackers and archive links routinely embed a full target URL as a parameter. Rewriting that embedded value changes where the link points, and the result still looks like a valid URL, so nothing flags it.
Protocol-relative URLs are a separate case
//example.com/page inherits the scheme of the page it sits on. It is neither HTTP nor HTTPS in the string, so a scheme rewrite skips it entirely. If a list mixes these in, handle them as their own branch rather than assuming the rewrite covered everything.
The rewrite is a string operation, not a migration
Changing a recorded URL says nothing about whether the server answers on 443. Where it matters, follow up with a request that reports the final status and destination โ a list of HTTPS strings pointing at hosts that only serve HTTP is worse than the original, because it now looks correct.
Try it: Convert HTTP to HTTPS on SeoWolf's Notepad.