ELI5: What is Base58Check encoding? I've seen posts on how to do it and I've read the wiki on what it is, however these explanations are too complex. Can someone explain what it is and why it's called Base58Check encoding? Are addresses generated without going over those steps still valid in Bitcoin? 

This is the explanation provided by the original bitcoind client in base58.h

// Why base-58 instead of standard base-64 encoding?
// - Don't want 0OIl characters that look the same in some fonts and
//      could be used to create visually identical looking account numbers.
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.


To further this question, what do npm packages like bs58check do exactly? The description is as so


  A straight forward implementation of base58check extending upon bs58.
Can someone explain what it is and why it's called Base58Check encoding?


Because of the name the function in the original Bitcoin codebase had.

The "Base58" refers to the fact that it is a base 58 format (it uses 58 different characters to encode the data), and the "Check" refers to the fact that a checksum is added to the encoded data.


  Are addresses generated without going over those steps still valid in Bitcoin?


It's complicated.

Base58Check is simply a way to encode a number of bytes of data into a string. In theory, if you find another way to construct a string that can be decoded by the Base58Check decoder to something with the right length and version byte, the result will indeed be a valid address.

I expect the answer to your question is no. You need to use something at least vaguely similar to a Base58Check encoder to end up with a valid address.


  To further this question, what do npm packages like bs58check do exactly?


It implements a way to convert bytes to Base58Check strings, and a way to convert such strings back to bytes.