What is the difference between drop frame and non-drop frame timecode?

Early in my career, I needed to learn about timecode, especially the differences between PAL, NTSC, drop frame, and non-drop frame. For some reason, I simply couldn’t grasp the difference between drop-frame and non-drop-frame. I couldn’t even find the reason why there was a difference. Eventually, after many questions and many hours of reading, I discovered that the key to understanding the difference was in learning the reason why both flavors exist.

That was over twenty years ago, and if you’re anything like I was and would like some clarification, keep reading.


What exactly is timecode? Well, it’s a counting system to indicate the position in time of video or film footage. As an example, it’s generally written or displayed as 01:00:00:00. Symbolically, I can write it as: hh:mm:ss:ff. This symbolic representation breaks down as follows:

hh – hours
mm – minutes
ss – seconds
ff – frames

This timecode number generally indicates the position in time of a particular frame or point in the video, not necessarily the time of day on a clock. Additionally, it is rare that a program would extend into the multi-hour range. I mention this because the first position, hh, will vary in value depending on the video or film project. For example, when editing a feature film, the process is broken down into reels, and the hour position defines the reel number. Reel one would be hour 01, reel two would be hour 02, and so forth. Today, film reels are generally around twenty minutes long.

Another example defining the hour position would be a completed television or film project that is ready for broadcast. In the United States, the industry standard is to format the videotapes at hour 01 with the first frame of picture at 01:00:00:00. However, in Europe using the PAL standard, many programs are formatted at hour 10 with the first frame of picture starting at 10:00:00:00. In either case, the videotapes are formatted this way so that the time leading up to the “hour” is used for bars and tones and any informational slates. If the program were to start at 00:00:00:00, then the formatting would be in hour 23, and many systems don’t play nice (or function at all) when the timecode transitions from hour 23 to hour 00.

Another detail about timecode is that it’s zero-based numbering. That means the first frame is counted as frame 00 not 01. As indicated above, the first frame of picture is generally 01:00:00:00. So when counting frames, the range is from 00-29, and then we start over again, incrementing the seconds counter each time.

But what about drop frame and non-drop frame? Hold on…I’m getting there. I first need to explain NTSC and PAL.


In a very general sense, NTSC and PAL have our electrical system to blame for their differences. The United States uses an electrical system based off of 60Hz, whereas Europe uses an electrical system based off of 50Hz. And believe it or not, this is what helped define the television frame-rate. The frame rate in the U.S. started as 30 frames per second (currently 29.97 fps, but I’ll get to that), and Europe is 25 frames per second. These video frames are then divided up into half-frames, called fields, and each of these fields aligns with the electrical frequency. But things get even more complicated.

When television was first invented, the picture was black-and-white, and the NTSC standard had no provision for color. In 1953, the NTSC standard was modified to allow color television to be compatible with the existing black-and-white receivers. This modification added a subcarrier to the video signal. Unfortunately, the frame-rate had to be reduced from 30 fps to 29.97 fps to minimize the interference between the chrominance signal and FM sound carrier.

So therein lies the reason for drop-frame. Get it? Don’t panic yet…I’m not done explaining.


If I can briefly sum up the difference between drop frame and non-drop frame timecode, drop frame coincides with time, yet non-drop frame does not. The fact that non-drop frame timecode is inaccurate with respect to time is the whole reason why drop frame timecode was created and is used. Broadcasters need to know exactly what the length of their program is. This is how they’re able to schedule their broadcast with commercials and time out the day. Without drop frame timecode, they’d quickly find themselves in trouble.

So what’s the problem with non-drop frame timecode?


If you remember, I stated earlier that timecode indicates the location on the videotape. For every frame of video, the timecode counter is incremented one frame. After every thirty frames, it increments one second, and starts re-counting the frames again. Then after sixty seconds, the minutes are incremented and so forth. The problem here is that this counter will not match ‘time’. I’m not implying that the timecode counter should directly match what time of day it is. What I’m stating is that the duration of timecode on the counter from the beginning of picture will not match the duration of real time that has elapsed if the program were to have been played for that length. This is because the video is playing slower than 30fps (29.97fps to be exact), yet it’s still counting every frame and incrementing the seconds counter every 30 frames. These happen at different rates.

Consider the following example where I’ve changed the values for ease of explanation. Pretend I recorded a video at 10fps and that the timecode display matches frame-for-frame. If I were to play back this video at 10fps, then the timecode duration will match real time duration. After every 10 frames, the seconds counter would increment at the same time as the second hand on a clock. Yet, if I were to play back this video at 5fps(half of the normal playback speed), what would happen? The timecode display still counts to ten frames and increments the seconds counter, but this would not coincide with every second on the clock. Instead, it would take two real seconds on a clock before you saw the seconds counter on the timecode display increment.

Take a look at the following graphic for a visual representation.


As you can see, at a playback speed of 5fps, which is slower than the recorded speed of 10fps, the seconds in real time get out of sync with the seconds in the timecode counter. With this example, it’s real easy to see and understand. And so understanding how it works at 30fps is straightforward. The exact same thing happens when the timecode is 30fps, but the video is played back at 29.97fps. The difference is that the change over time happens at a much slower rate, so it’s more difficult to see and show graphically.

This discrepancy between the timecode counter and real time is a nuisance, to say the least. To fix this, drop-frame timecode was created.


Drop frame timecode is a format that allows the counter to more accurately indicate real time duration. It’s able to do this by dropping frames. The specific pattern drops the first two frames of every minute except every tenth minute. By doing this, the counter is adjusted to compensate for video playing back slower than 30fps, specifically 29.97fps. So take a look at the following list:


So frames are not dropped for every tenth minute of every hour: 00, 10, 20, 30, 40, & 50. Yet two frames are dropped for every other minute, which includes minutes 1-9, 11-19, 21-29, 31-39, 41-49, and 51-59. In total, this calculates to a total of 18 dropped frames every ten minutes, and this almost compensates for the difference in rate. I say almost, because there is still a minor error, but it is only 86.4ms per day or 1.0 ppm.

And one very important point to make is that there are no actual video frames dropped, only the timecode ‘label’ is dropped. It’s the counting that changes.

Timecode notation is generally displayed with colons. However, drop frame timecode is usually represented with a semi-colon or period between the seconds and frames like this: 1:01:00;02 or 1:01:00.01.

Drop frame timecode is typically abbreviated as DF and non-drop frame as NDF.


If I were to sum up the difference in one sentence, drop-frame timecode matches real time duration whereas non-drop frame does not. Of course there are many more details to the subject, and I encourage you to discover these for yourself if you’re interested.