Okay, so I store each string in a pattern. The first address(relative to the string i'm storing) is the address that i'm assigning to the string, it's like an identification number. The second address(let's call this the length address) will store the length of the string continued by the individual characters of the string. So this pattern is followed for storing all the strings. Now if there is a 0 in the length address then it means that the address(of the EEPROM) hasn't been written to, so I will start storing the new string in the address before the length address( to store the identification number). So now if the address declared in the function(EEPROM_stringwrite(23, "saiyan"); 23 in that) matches with an already existing address then it over-writes that particular string currently stored in that address. The strings stored after that address are then adjusted to accommodate the new string. There is no problem if the new string is the same size as the previous string but if it's is bigger then the next address( of the EEPROM) are moved to farther and if the length of the new string is lesser than the current string stored in that address then the next string(s) are "pulled" closer to accommodate the size of the new string. So yeah that's how it works. Thanks for mentioning that inefficient part "++len" will change it. I'm still an amateur(15 yrs) so can you put it in simpler terms, not too simple but not too complex. Thanks