91³Ô¹ÏÍø

Watch CBS News

Looking for something different at the beach? There's one north of Boston where the sand sings.

MANCHESTER-BY-THE-SEA - If you're looking for something a little different at the beach with just a few weeks left of summer, how about one that sings?

Singing Beach in Manchester-by-the-Sea

Manchester-by-the-Sea, Massachusetts is known for the of the same name. It's also known locally for .

"It is Singing Beach because the sand does sing. So, it may not sing every day, just like the rest of us, I guess, but it does make a singing sound as you walk across it," Cheryl Marshall, the town's Director of Parks and Recreation, told WBZ-TV.

beach.jpg
Singing Beach in Manchester-by-the-Sea, Massachusetts. CBS Boston

What makes sand sing?

According to the state's , the sound is caused by grains of sand having a particular size, shape and mineral composition. It also has to be dry. Here's the explanation:

Some beaches make unusual noises when you walk on them. These sounds, known as singing, barking, or whistling, may be caused by an abundance of similarly sized, nearly spherical grains of quartz sand on the beach (without much dust or organic matter between the grains). Walking over this material is thought to cause a vibration as the layers of sand grains slide over each other. You are more apt to hear singing sand on the dry upper portion of the beach because these grains don't stick together like wet sand. Interested in hearing this for yourself? Singing Beach in Manchester-by-the-Sea is actually named for this phenomenon. 

"Honestly, when it's quiet, it's heaven. It really is," said Marshall.

"I walk a couple miles a day on this beach and (it's) usually always singing," said lifeguard Aislin Wallick.

"It's more of a squeak I would say than a singing," resident Rachel Steeg told WBZ.

We couldn't get it to sing. It rained the night before, so the leftover moisture in the sand may have had an effect. Fortunately, there's YouTube. You can see and listen for yourself . 

How to get to Singing Beach 

You can try for yourself, but don't bother driving. The parking lot is small and is for town residents only on the weekend. They do reserve about 40 spots for out of town guests Monday through Friday. It costs $30. Your best bet is on the Rockport line of the MBTA's Commuter Rail. The beach is walkable from the Manchester stop. But be warned, there is a $10 walk-on fee at the beach.

It may cost you, but locals say it's worth it.

"It's very peaceful, calm waters, very relaxing here," said Wallick.

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