Time accuracy between workstations/member servers and domain controllers is a key requirement for the proper functioning of the Active Directory domain.
In order for the time sync to work properly in AD, the administrator needs to configure the PDC domain controller to synchronize its time with an authoritative NTP time source. The remaining DCs and the workstations will synchronize their time according to a domain hierarchy
In some cases, it may also be necessary for the administrator to configure the NTP time sync settings in the domain using Group Policies.
How Does Time Sync Work in an AD Domain?
In the AD environment, the time synchronization is performed according to a strict domain hierarchy:
- Workstations and member servers synchronize their time with the DCs that are closest to them;
- DCs synchronize their time with the single DC assigned the FSMO Primary Domain Controller Emulator (PDC) role;
- PDC domain controller is the main time source in the domain. By default, an unconfigured PDC may use the local hardware clock as its time source;
- The PDC emulators in the child domains synchronize their time with the DCs from the parent domain;
- The PDC emulator in the root domain is the main time source for the entire AD forest.
A typical hierarchy of time sources in an AD DS domain is shown in the following diagram:

In AD, time sync is typically configured using Group Policy in production environments.
We recommend you to use manual configuration of the PDC emulator primarily for:
- initial setup
- testing
- troubleshooting
In the sections below you will find both approaches covered.
Step 1: Configure Time Sync on the PDC Emulator (Manual Method)
In this section, we will show you how to manually configure time sync on the PDC emulator using command-line tools.
According to Microsoft’s best practices, an administrator must enable the root PDC to sync its time with an external NTP time source.
Locate the domain controller with the PDC role in the forest root domain using the command:
Get-ADDomain|select pdcemulator

Check Current Time Source with w32tm
Connect to the PDC and check the current time source:
w32tm /query /source

The following outputs are possible:
- Local CMOS Clock โ means that the time source on this server is its local hardware clock (CMOS)
- VM IC Time Synchronization Provider โ if a virtualized domain controller is used, it syncs its time with the hypervisor host
Selecting External NTP Servers
Obtain the names or IP addresses of the authoritative external time sources (NTP providers) to sync the time with. It is preferable to use public NTP servers from NTP Pool Project or your ISP’s NTP servers.
Go to https://www.ntppool.org, find your location and copy the name of the NTP server.
Check if the selected external NTP server is accessible from the PDC (UDP port 123 is used for connection):
w32tm /stripchart /computer:0.us.pool.ntp.org

Sync time
Run the following commands on the PDC emulator in order to configure external time sync.
Enable time synchronization on the PDC host with an external NTP source:
net stop w32time

w32tm /config /syncfromflags:manual /manualpeerlist:"0.us.pool.ntp.org,0x8 1.us.pool.ntp.org,0x8 2.us.pool.ntp.org,0x8 3.us.pool.ntp.org,0x8"

w32tm /config /reliable:yes

w32tm /config /update

net start w32time

Note that the 0x8 flag configures the manually specified peer to use Client mode. If you want Windows Time to use the SpecialPollInterval value for polling manually configured peers, use the 0x1 (SpecialInterval) flag.
Sync time with NTP server:
w32tm /resync
Check your current configuration:
w32tm /query /configuration

Check the current NTP client settings:
w32tm /query /source
Run the command:
w32tm /monitor
This command displays time offsets and sync status for DCs.
Reset other DCs in domain
To reset other DCs in a domain to the default time sync scheme, use the command:
w32tm /config /syncfromflags:DOMHIER /update
Tip. If something does not work, try to restart the Windows Time service and reset its configuration:
net stop w32time
w32tm.exe /unregister
w32tm.exe /register
net start w32time
Note. The forest root domain PDC emulator is the only host in Active Directory that should have NTP as its time provider.
Step 2: Configure Time Sync Using Group Policy (Recommended)
Note that in production environments we recommend you to configure time sync using Group Policy instead of manual config. This ensures consistency and automatically applies settings when the PDC role changes.
In order to ensure that the current PDC emulator always uses an external NTP source, configure these settings through Group Policy.
- Open the Group Policy Management Console (GPMC.msc);
- Select the WMI Filters section and create a new WMI filter with the name Filter PDC Emulator and the following WMI query in the root\CIMv2 namespace Select * from Win32_ComputerSystem where DomainRole = 5

- This WMI filter is used to select the DC holding the PDC role.
- Create a new GPO and link it to the AD OU named Domain Controllers;

- Edit this GPO. Navigate to Computer Configuration > Administrative Templates > System > Windows Time Service
- Enable the policy Global Configuration Settings and set AnnounceFlags to 5.

- This configures the domain controller to advertise itself as a reliable time server.
- Then expand the Time Providers section in the GPO editor.
- Enable the following policy options:
Configure Windows NTP Client: Enabled (policy settings are described below);
Enable Windows NTP Client: Enabled;
Enable Windows NTP Server: Enabled.
- Specify the following settings in Configure Windows NTP Client policy:
NtpServer: us.pool.ntp.org,0x8 1.us.pool.ntp.org,0x8 2.us.pool.ntp.org,0x8 3.us.pool.ntp.org,0x8;
Type: NTP;
CrossSiteSyncFlags: 2;
ResolvePeerBackoffMinutes: 15;
ResolvePeerBackoffMaxTimes: 7;
SpecialPollInterval: 1024;
EventLogFlags: 0.
- Assign the WMI filter โFilter PDC Emulatorโ that you created earlier to the GPO.

- Increase the priority of your GPO in the GPMC by moving it above the Default Domain Controller Policy in the link order list;

- Allow outbound UDP 123 from the forest root PDC emulator to approved external NTP servers.
- After that run the command:
gpupdate /force - After applying GPO, you should verify the time sync config on the PDC:
w32tm /query /source
w32tm /query /status
w32tm /monitor
Note. Never set NT5DS as the server type in the GPO for the PDC emulator! Only NTP should be set here. NT5DS means that sync is based on the domain hierarchy, which is not suitable for the PDC emulator that must use an external time source.
Advanced: Configure Client Time Sync (Optional)
Keep in mind that the following scenarios are optional and only required in specific environments.
By default, domain computers synchronize their time with domain controllers according to the domain hierarchy (option Nt5DS). This time sync scheme works correctly in most cases and requires no further configuration.
In case you are experiencing problems with time sync on domain clients, you can try specifying the time server directly on clients using GPO:
- Create a new GPO and assign it to the OU with computers;
- Navigate to Computer Configuration > Administrative Templates > System > Windows Time Service > Time Providers and enable the policy Configure Windows NTP Client.

- Specify your domain name (preferred) or IP address/FQDN of the PDC as the NTP server.
Note that when Type is set to NT5DS, the NtpServer value is ignored (clients will follow the domain hierarchy). You should specify NtpServer only when Type is set to NTP.
Set Type: NT5DS
CrossSiteSyncFlags: 2
ResolvePeerBackoffMinutes: 15
ResolvePeerBackoffMaxTimes: 7
SpecialPollInterval: 3600
EventLogFlags: 0
Update Group Policy settings on the clients and check the received time sync settings as described above. By default, the domain clients synchronize their clocks once per hour (3,600 seconds).
Advanced: Virtual Machine Time Sync Considerations
- You should consider disabling hypervisor time sync on DCs. This can be achieved by creating a special registry parameter using the GPO.
- Navigate to Computer Configuration > Preferences > Windows Settings > Registry > New > Registry Item
- Create a reg item with the following settings:
Action: Update
Hive: HKEY_LOCAL_MACHINE
Key Path: SYSTEM\ CurrentControlSet\ Services\ W32Time\ TimeProviders\ VMICTimeProvider
Value Name: Enabled
Value Type: REG_DWORD
Value Data: 0

In some cases, you can manually sync the client time with Domain Controller.
Disable CMOS and Hypervisor Time Sync
In case your DCs/clients are VMs, you should also disable time sync with the hypervisor to avoid time drift and conflicts.
Disable time synch with the hypervisor (VM IC Time Provider):
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider -Name Enabled -Value 0
Restart the W32Time service on PDC:
Restart-Service "Windows Time" -force
On virtualized domain computers, disable the time sync with the hypervisor in the VM properties.
- Hyper-V: disable the Time Synchronization option under Integration Services
- VMware ESXi: edit VM settings > VM Options > VMware Tools > Time, uncheck the option Synchronize guest time with host

Wrapping up
In Active Directory, proper time sync relies on a single authoritative time source: the PDC emulator in the root domain.
For most environments we recommend you to:
- Configure the PDC to sync with an external NTP source
- Allow all other systems to follow the domain hierarchy (NT5DS)
You can use Group Policy to ensure consistency and avoid config drift across DCs.
Which server is the authoritative time source in Active Directory?
The PDC emulator in the root domain is the primary time source for the entire forest. All other domain controllers and clients follow the domain hierarchy.
Should I configure time sync manually or use Group Policy?
- Group Policy (recommended): for production environments โ ensures consistency and automatic reconfiguration if the PDC role changes
- Manual configuration: suitable for initial setup, testing, or troubleshooting
How often do domain computers sync time?
By default, domain clients synchronize time every 3600 seconds (1 hour).
Should I disable time synchronization with the hypervisor?
Yes, if your domain controllers or domain members are virtual machines.ย Hypervisor time sync can conflict with Windows Time service and cause drift.
Can I configure a custom NTP server for domain clients?
Yes, but only if needed. By default, clients should follow the domain hierarchy. Direct NTP configuration via GPO is used only in specific scenarios.
What happens if the PDC emulator role changes?
- If configured manually โ you must reconfigure time sync on the new PDC.
- If configured via Group Policy โ settings will be applied automatically (recommended approach).


Thanks much. Worked great for me with one tweak.
I sync all internal time to a Cisco device configured as a time server. Windows fetches time from Cisco devices using SNTP. If anyone wants to the same, change “0x1” to “0x8” for the NtpServer list in the NTP Client Policy.
Peer: myCiscoDevice.myDomain.com,0x8
State: Active
Time Remaining: 26.0140877s
Mode: 3 (Client)
Stratum: 4 (secondary reference – syncd by (S)NTP)
PeerPoll Interval: 6 (64s)
HostPoll Interval: 6 (64s)
The detailed instructions provided in this post are greatly appreciated!
just to clarify, for AD Clients (Windows desktop/laptop users) you set up the NTP servers through GPO – to pvtntpserver.mydomain,0x1 0.something.pool.ntp.org,0x1 .something.pool.ntp.org,0x1 2.something.pool.ntp.org,0x1 3.something.pool.ntp.org,0x1. – when they connect to corp network (using VPN) does this time source change to PDC as source due to domain hierarchy? or it will stay using external time source set up on GPO. thank you.
Very well done. The article is formatted nicely, very clear, very concise. In the days when Internet how-to articles are 90% rubbish, this one shines on many fronts.
This is incorrect
w32tm.exe /config /manualpeerlist:โ0.pool.ntp.org,0x8 1.pool.ntp.org,0x8 2.pool.ntp.org,0x8โณ /syncfromflags:manual /update
This is correct
w32tm.exe /config /manualpeerlist:โ0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org,0x8โณ /syncfromflags:manual /update
โ,0x8โ should only be on the line once
To get this to work correctly I had to reconfigure the order of objects being applied to sit above my default domain controller policy to work on the PDC otherwise it was being ignored. Incase others come across the same issue.
This! I had the same exact issue until I changed the order. Thanks Matt!!!
and certainly, the firewall rule should be Outbound, not Inbound (as it is in the Powershell command listed). We do not have traffic on UDP 123 initiated from outside and do not need to create an Inbound rule.
I have PDC sync with Internal Time Server but in all ADC like – Dc1,DC2,DC3 not sync with DOMHIER and its dispalyed local CMOS time.
PDC has all role. Please help.
Thank you very much for this post which is practically straight forward and clear. Most of the articles on internet are confusing and not that much helpful.