91³Ô¹ÏÍø

Watch CBS News

What is the Dover demon? Massachusetts exhibit takes deeper look at mystery.

A 1970s sighting of a spooky creature put Dover, Massachusetts on the map internationally. Today, the legend of the Dover Demon still lives on.

"The dover demon was reported to have pale fleshy tone skin, long fingers, and bright glowing orange eyes," Dover Historical Society Board Member and Director Liz Fallon said. "The day before the sighting April 20th there was a reported UFO sighting in Medfield which is just a town over."

Over the years, Fallon herself has become a believer.

What is the Dover Demon?

On April 21 and 22 of 1977, three separate residents reported seeing a strange creature that decades later remains a mystery.

The being became known as the "Dover Demon." Over the years, it's become a phenomenon in the world of cryptozoology. Cryptozoology is the study of creatures or animals whose existence is not scientifically proven.

"I believe they saw something those two nights," Fallon said.

The sightings were on Farm Street, Springdale Avenue, and Miller Hill Road in Dover.

The first sighting was at 10:30 p.m. the night of April 21st along a stone wall on Farm Street. The second sighting was at around midnight and the next sighting was the following evening on Springdale Avenue.

Images often show the creature climbing rocks or by a tree as residents have described seeing it.

Fallon told WBZ-TV it wasn't the first time that similar were reports were made.

"There were reports from five years earlier in Sherborn that somebody saw what looked very much like the description of the Dover Demon as well," she said.

download-2025-10-30t084220.jpg
An illustration of the so-called "Dover Demon." CBS Boston

Dover Demon exhibit

Comic books, card games, and novels have all come out over the years highlighting the local legend.

"Some people in town I talk to say they've seen the Dover Demon, or have seen something like the Dover Demon," Fallon said.

This fall a special exhibit on the demon is now open at the Dover Historical Society's Sawin Museum.

It explains the history of the tale that's haunted the community for nearly half a century.

"Some people say alien, some people say cryptid, some people say it was a hoax. We say it's up to you to figure out," Fallon said.

The exhibit, which features memorabilia and children's activities, is on display now.

Guests can visit on the second Saturday of November and December, or go online to set up a time to check it out and determine if they're believers.

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