91³Ô¹ÏÍø

Watch CBS News

How and when to vote early in NYC's 2025 general election for mayor

Early voting has ended in the New York City mayoral race, and now it's time for Election Day on Tuesday, Nov. 4.

Democrat Zohran Mamdani, independent Andrew Cuomo and Republican Curtis Sliwa are running a closely watched race to replace Mayor Eric Adams, who ended his reelection campaign and endorsed Cuomo in the race

After months of campaigning, it's time for New Yorkers to hit the polls and vote for the 111th mayor to lead the city. More than 735,300 ballots were cast during early voting, and turnout appeared to be high.

Here's everything to know about early voting and what to expect on the ballot.

NYC voter registration deadline passed

The voter registration deadline for the November general election was Saturday, Oct. 25, which was also the first day of early voting.

Check your voter registration status  to make sure it's up to date.

If you aren't registered, you can  or print a form to submit to your county. You can also call 1-800-FOR-VOTE (1-800-367-8683) to request a voter application.

To register online, you must be a U.S. citizen and resident of your county, city or village for 30 days before the election. New York allows 16-year-olds and 17-year-olds to pre-register, but they have to wait until they're 18 to vote.

When does early voting start and end in NYC?

New York City held nine days of early voting from Saturday, Oct. 25 through Sunday, Nov. 2.

Polls were scheduled to be open during the following times: 

  • Saturday, Oct. 25, 2025 from 9 a.m. to 5 p.m.
  • Sunday, Oct. 26, 2025 from 9 a.m. to 5 p.m.
  • Monday, Oct. 27, 2025 from 9 a.m. to 5 p.m.
  • Tuesday, Oct. 28, 2025 from 10 a.m. to 8 p.m.
  • Wednesday, Oct. 29, 2025 from 10 a.m. to 8 p.m.
  • Thursday, Oct. 30, 2025 from 9 a.m. to 5 p.m.
  • Friday, Oct. 31, 2025 from 8 a.m. to 4 p.m.
  • Saturday, Nov. 1, 2025 from 9 a.m. to 5 p.m.
  • Sunday, Nov. 2, 2025 from 9 a.m. to 5 p.m.

There is no voting on Monday, Nov. 3. Polls will then be open from 6 a.m. to 9 p.m. on Tuesday, Nov. 4 for Election Day. 

Early voting sites can differ from Election Day locations, so be sure to 

What to expect on the ballot for the 2025 general election

Mamdani, Cuomo and Sliwa are center stage in this year's mayoral election, which has captured the attention of the city and the country.

Meanwhile, New Yorkers are also casting their ballots for public advocate, comptroller, borough presidents, City Council seats and other local offices. 

Additionally, there are six ballot proposals to weigh in on, including three related to the City Council's role in land use decisions. 

 to find a sample ballot for your address.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });