91³Ô¹ÏÍø

Watch CBS News

Clinton on pace to win popular vote despite losing election

WASHINGTON  -- Despite losing Tuesday’s presidential election, Hillary Clinton appears to be on pace to win the popular vote, an ironic twist in an election in which her opponent repeatedly said the system was rigged against him.

Just two days before Election Day, Republican businessman Donald Trump tweeted: “The Electoral College is a disaster for a democracy.”

As it turns out, without the Electoral College, Trump probably wouldn’t be the president-elect.

A day after Election Day, Clinton held a narrow lead in the popular vote, according to unofficial results tallied CBS News. With nearly 125 million votes counted, Clinton had 47.6 percent of the vote and Trump had 47.4 percent.

That’s a lead of about 200,000 votes.

What does Trump's victory mean? 14:37

Many states count votes after Election Day, so Clinton isn’t guaranteed to keep her lead. However, most of the outstanding votes appear to be in Democratic-leaning states, making it very likely she will become the second Democratic candidate for president this century to win the popular vote but lose the presidency.

The biggest chunk of uncounted votes is in California. Washington State, New York, Oregon and Maryland also have large numbers of uncounted votes. Clinton won all those states, and if the trends continue, she will pad her lead by more than 1 million votes.

There are also votes to be counted in Arizona and Alaska, two Republican-leaning states. But they are far outnumbered by uncounted votes in Democratic states.

Under the Electoral College system, each state gets one vote for each member of Congress representing the state. California has the most, with 55. Seven states have only three. The District of Columbia has three, even though the nation’s capital has no vote in Congress.

It takes 270 Electoral College votes to win the presidency. Trump’s total stands at 289, with races in Michigan, New Hampshire and Minnesota too close to call.

There have been occasional calls to scrap the Electoral College, with no success. The latest push came after the 2000 presidential election, in which Democrat Al Gore lost to Republican George W. Bush, despite winning the popular vote.

Any calls to scrap the Electoral College aren’t likely to go anywhere this time, either, with Republicans controlling both the House and Senate.

Sen. Tim Kaine, the Democratic candidate for vice president, praised Clinton on Wednesday for winning the popular vote.

But when Clinton made her concession speech, she didn’t mention it.

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=fd53910ecf4604072044ab7c46d9b028'; 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(); } }); }); }); });