I figured out a way to create .TiVo files that aren't encrypted so that you can edit the metadata. The actual metadata is in two XML blocks (hereafter referred to as chunks), that you can extract using tivodecode with the -D option. I will leave documenting the exact XML format to others. The basic format of the file header and chunk headers comes from the tivodecode source, and the rest from trial and error. I'm attaching a very basic Windows command prompt exe for anyone that wants to try it. The rest of this post is probably of interest to developers only. The usage is as follows: mktivo chunk1 chunk2 mpegfile tivofile chunk1 & chunk2 are the XML files extracted by tivodecode which you can edit after extracting them, or create your own from scratch. mpegfile is the unencrypted MPEG from tivodecode, kmttg, VideoReDo etc, and tivofile is the output file that it will write. The technical stuff: TiVo files normally consist of the file header, followed by chunk #3, chunk #1, chunk #2, and the actual MPEG file. Chunk #3 is not encrypted and contains the disclaimer. Desktop could care less if it's there so I leave it out. The rest of the data is usually encrypted, but by changing a field in the chunk headers from 1 to 0 it works fine without the encryption. All numeric fields in the file and chunk headers use big-endian (or Motorola) format - Windows developers take note. Each chunk consists of a chunk header, the XML data, and some padding. The file header is 16 bytes long: Bytes 0-3: The text string "TiVo" Bytes 4-5: (16-bit) Unknown - set it to 4 Bytes 6-7: (16-bit) Unknown - set it to 13 Bytes 8-9: (16-bit) Unknown - set it to zero Bytes 10-13: (32-bit) The offset in bytes to the actual MPEG data Bytes 14-15: (16-bit) The number of chunks - set it to 2 Each chunk header is 12 bytes long: Bytes 0-3: (32-bit) The chunk size in bytes - more on that later Bytes 4-7: (32-bit) The size of the XML file in bytes Bytes 8-9: (16-bit) The chunk ID, which will be 1 or 2 Bytes 10-11: (16-bit) 0=unencrypted, 1=encrypted, so set it to 0 For some reason the first chunk has 4 zero bytes after it and subsequent chunks have 7 zero bytes of padding, so the size for chunk 1 is the header size+XML size+4 and the size for chunk 2 is the header size+XML size+7. After writing the chunks, pad the output file with zero bytes until the file size is an even multiple of 1024 bytes, then pad it with another 1024 zero bytes. After that, append the MPEG file and you have a .TiVo file. I have no idea why any of the padding bytes are necessary but it seems to require them. I have also noticed that if you transfer a show back to the TiVo that's in its current database it uses the some of the fields like description from the database, not the metadata once it's transferred. I'm pretty sure that's based on the unique episode ID, but more experimentation is probably needed. I hope this helps somebody. I mostly use it to edit the airdate and duration on series shows like Good Eats so they show up in order by episode and have the correct duration after editing out the commercials, but a full-blown GUI program to edit or create metadata would be sweet if anyone wants to tackle it.