Is there an encryption algorithm that only adds minimal (if any) size compared to the size of the unencrypted data? We are working on a project in which we will need to encode and encrypt 1 - 1.3 kb worth of data at a time. We need the result of each piece of data to be the same size it was before, or be smaller, or be only slightly bigger. Basically as small as it can be while still being secure and still being able to get the original data back by decrypting and decoding.  

If you were doing something like this how would you best approach it? Is there an encryption algorithm that only adds minimal (if any) size compared to the size of the unencrypted data?  

This is in JavaScript and will run in browsers.
A steam cipher does not increase the size of the plaintext, but you need an IV (which then does increase the size) or different key each time, so effectively this doesn’t help. You can get a relatively small increase of size by using AES-GCM with a tag size of 10 bytes and IV of size 12 bytes.  So this increases by 22 bytes overall.

If this is too much, then it depends if you can guarantee that the same plaintext never repeats. If yes, then you could use AES-GCM-SIV with a fixed IV and save the IV bytes. Alternatively, if you don’t need authentication, then you can use XTS but this is far from ideal. 

In general, an additional 22 bytes for about 1KB is only about 2% overhead so it’s not significant and your best using a full blown authenticated encryption mode.