This is what I've gleaned from examining the binary keyword.bas files generated by Ulead's Photo Explorer. This is enough to read the captions out of the files, and that's all I cared about, so that's all I bothered to decipher. bytes 0-4: 4-byte integer indicating number of images in file each record: 259 bytes: filename plus unknown binary content the filename comes first, null terminated. So if the filename is 10 characters long, you'll have the 10 characters of the filename, a null character, and then 248 random bytes caption length indicator: 0x00 to 0xfe - single byte value of the caption length -OR- 0xff: means to read the next two bytes as the caption length caption