{"id":1402,"date":"2026-05-10T18:00:00","date_gmt":"2026-05-10T18:00:00","guid":{"rendered":"https:\/\/www.hungrytravelfamily.com\/blog\/?p=1402"},"modified":"2026-05-25T10:35:26","modified_gmt":"2026-05-25T10:35:26","slug":"copenhagen-harbor-swimming","status":"publish","type":"post","link":"https:\/\/hungrytravelfamily.com\/blog\/destinations\/copenhagen-harbor-swimming\/","title":{"rendered":"Copenhagen Harbor Swimming Guide: 5 Places Locals Actually Swim"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1402\" class=\"elementor elementor-1402\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44dacd1b e-flex e-con-boxed e-con e-parent\" data-id=\"44dacd1b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3186fcc8 elementor-widget elementor-widget-text-editor\" data-id=\"3186fcc8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t\n<p><style>\n\/* \u2500\u2500 Hide Astra default post title + meta for this post \u2500\u2500 *\/\n.single-post .entry-title,\n.single-post .entry-meta,\n.single-post .ast-post-format-meta,\n.single-post .post-meta { display:none !important; }\n.single-post .entry-content { padding-top:0 !important; margin-top:0 !important; }\n.single-post .ast-article-single { padding-top:0 !important; }\n.ast-separate-container .ast-article-post,\n.ast-separate-container .ast-article-single { padding:0 !important; box-shadow:none !important; border-radius:0 !important; }\n\n\/* \u2500\u2500 Design tokens \u2500\u2500 *\/\n:root{\n  --htfg:#2D5A3D;--htfgl:#3A7250;--htfgd:#1a3d28;\n  --htfau:#C8A45A;--htfaul:#E8D5A0;--htfaup:#F6EED9;\n  --htfow:#F8F7F4;--htfg1:#F2F1EE;--htfg2:#E5E3DE;\n  --htfg4:#A8A49C;--htfg6:#6B6860;--htfg8:#2C2A26;--htfbk:#1A1917;\n}\n\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\n.htf-hero{position:relative;background:linear-gradient(180deg,var(--htfow) 0%,#fff 100%);padding:72px 20px 56px;overflow:hidden;}\n.htf-hero::before{content:\"\";position:absolute;top:0;right:-120px;width:420px;height:420px;background:radial-gradient(circle at center,var(--htfaup) 0%,transparent 70%);z-index:0;}\n.htf-hero::after{content:\"\";position:absolute;bottom:-80px;left:-100px;width:380px;height:380px;background:radial-gradient(circle at center,rgba(45,90,61,.08) 0%,transparent 70%);z-index:0;}\n.htf-hero-inner{max-width:820px;margin:0 auto;position:relative;z-index:2;}\n.htf-breadcrumb{font-size:12px;color:var(--htfg4);letter-spacing:1.5px;text-transform:uppercase;font-weight:600;margin-bottom:24px;}\n.htf-breadcrumb a{color:var(--htfg4);text-decoration:none;}\n.htf-category{display:inline-block;font-size:11px;font-weight:700;color:var(--htfau);letter-spacing:2px;text-transform:uppercase;margin-bottom:20px;padding:6px 14px;border:1px solid var(--htfau);border-radius:2px;}\n.htf-hero h1{font-family:'Playfair Display',Georgia,serif;font-size:52px;font-weight:400;line-height:1.1;letter-spacing:-1px;color:var(--htfbk);margin-bottom:24px;}\n.htf-hero h1 em{color:var(--htfg);font-style:italic;}\n.htf-hero-deck{font-size:18px;color:var(--htfg6);line-height:1.7;font-weight:300;max-width:680px;margin-bottom:36px;}\n.htf-hero-meta{display:flex;gap:32px;align-items:center;flex-wrap:wrap;padding-top:28px;border-top:1px solid var(--htfg2);}\n.htf-meta-author{display:flex;align-items:center;gap:14px;}\n.htf-avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--htfg),var(--htfgd));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0;}\n.htf-hero-meta strong{color:var(--htfbk);font-weight:600;display:block;font-size:14px;}\n.htf-dot{color:var(--htfg2);font-size:20px;}\n.htf-hero-meta span{font-size:14px;color:var(--htfg4);}\n\n\/* \u2500\u2500 HERO IMAGE \u2500\u2500 *\/\n.htf-hero-img{max-width:1140px;margin:0 auto 72px;padding:0 20px;}\n.htf-hero-img-inner{aspect-ratio:21\/9;border-radius:8px;overflow:hidden;background:linear-gradient(160deg,#0d2018 0%,#1a3d28 40%,#2D5A3D 100%);display:flex;align-items:center;justify-content:center;position:relative;}\n.htf-hero-img-inner::before{content:\"\";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 40%,rgba(200,164,90,.12) 0%,transparent 60%);}\n.htf-hero-img-inner span{position:relative;color:rgba(255,255,255,.55);font-size:13px;letter-spacing:2px;text-transform:uppercase;}\n\n\/* \u2500\u2500 WRAP + SIDEBAR \u2500\u2500 *\/\n.htf-wrap{max-width:1140px;margin:0 auto;padding:0 20px 80px;display:grid;grid-template-columns:1fr 300px;gap:60px;}\n.htf-body{min-width:0;}\n.htf-body p{font-size:16px;color:var(--htfg6);line-height:1.8;margin-bottom:1.4em;}\n.htf-body h2{font-family:'Playfair Display',serif;font-size:34px;font-weight:400;color:var(--htfbk);margin:56px 0 20px;line-height:1.2;}\n.htf-body h3{font-family:'Playfair Display',serif;font-size:24px;font-weight:400;color:var(--htfg8);margin:36px 0 14px;}\n.htf-body h4{font-size:13px;font-weight:700;color:var(--htfg);letter-spacing:1.5px;text-transform:uppercase;margin:28px 0 14px;}\n.htf-body ul{padding-left:0;list-style:none;margin-bottom:1.4em;}\n.htf-body ul li{padding:8px 0 8px 22px;position:relative;font-size:15.5px;color:var(--htfg6);line-height:1.7;border-bottom:1px dashed var(--htfg1);}\n.htf-body ul li:last-child{border-bottom:none;}\n.htf-body ul li::before{content:\"\u2192\";position:absolute;left:0;color:var(--htfau);font-size:13px;top:10px;}\n\n\/* \u2500\u2500 TLDR \/ SHORT ANSWER \u2500\u2500 *\/\n.htf-tldr{background:var(--htfow);border-left:4px solid var(--htfau);padding:28px 32px;margin:32px 0 40px;border-radius:0 6px 6px 0;}\n.htf-tldr-label{font-size:11px;font-weight:700;color:var(--htfau);letter-spacing:2px;text-transform:uppercase;margin-bottom:8px;}\n.htf-tldr p{margin:0;font-size:16px;line-height:1.75;}\n\n\/* \u2500\u2500 TOC \u2500\u2500 *\/\n.htf-toc{background:#fff;border:1px solid var(--htfg2);padding:28px 32px;margin:40px 0;border-radius:6px;}\n.htf-toc-label{font-size:11px;font-weight:700;color:var(--htfg);letter-spacing:2px;text-transform:uppercase;margin-bottom:14px;}\n.htf-toc ol{margin:0;list-style:none;padding:0;counter-reset:toc;}\n.htf-toc li{counter-increment:toc;padding:6px 0;border-bottom:1px dashed var(--htfg1);font-size:15px;}\n.htf-toc li:last-child{border-bottom:none;}\n.htf-toc li::before{content:counter(toc,decimal-leading-zero);color:var(--htfau);font-weight:700;margin-right:14px;font-family:'Playfair Display',serif;}\n.htf-toc a{color:var(--htfg8);text-decoration:none;}\n.htf-toc a:hover{color:var(--htfg);}\n\n\/* \u2500\u2500 PROMPT BOXES \u2500\u2500 *\/\n.htf-prompt{background:linear-gradient(135deg,var(--htfow) 0%,#fff 100%);border:1px solid var(--htfg2);border-radius:6px;padding:24px 28px;margin:16px 0;position:relative;}\n.htf-prompt::before{content:\"\";position:absolute;top:0;left:0;width:4px;height:100%;background:linear-gradient(180deg,var(--htfg),var(--htfau));border-radius:6px 0 0 6px;}\n.htf-prompt-title{font-size:12px;font-weight:700;color:var(--htfg);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:10px;}\n.htf-prompt blockquote{font-size:15px;color:var(--htfg8);line-height:1.7;font-style:italic;margin:0;padding:0;border:none;}\n\n\/* \u2500\u2500 PULL QUOTE \u2500\u2500 *\/\n.htf-pull{font-family:'Playfair Display',serif;font-style:italic;font-size:26px;color:var(--htfg);line-height:1.4;text-align:center;padding:40px 20px;margin:44px 0;position:relative;}\n.htf-pull::before{content:\"\\201C\";color:var(--htfau);font-size:48px;line-height:0;position:relative;top:12px;}\n.htf-pull::after{content:\"\\201D\";color:var(--htfau);font-size:48px;line-height:0;position:relative;top:12px;}\n\n\/* \u2500\u2500 CALLOUT BOX \u2500\u2500 *\/\n.htf-callout{background:var(--htfaup);border:1px solid var(--htfaul);border-radius:6px;padding:28px 32px;margin:40px 0;}\n.htf-callout-label{font-size:11px;font-weight:700;color:var(--htfau);letter-spacing:2px;text-transform:uppercase;margin-bottom:10px;}\n.htf-callout h4{font-family:'Playfair Display',serif;font-size:20px;color:var(--htfbk);font-weight:400;margin-bottom:8px;}\n.htf-callout p{font-size:15px;color:var(--htfg6);line-height:1.7;margin:0 0 12px;}\n.htf-callout a{color:var(--htfg);font-size:14px;font-weight:600;text-decoration:none;}\n\n\/* \u2500\u2500 NEWSLETTER \u2500\u2500 *\/\n.htf-nl{background:var(--htfg);color:#fff;border-radius:8px;padding:44px 36px;margin:56px 0;text-align:center;position:relative;overflow:hidden;}\n.htf-nl::before{content:\"\";position:absolute;top:-60px;right:-60px;width:200px;height:200px;background:radial-gradient(circle,rgba(200,164,90,.2) 0%,transparent 70%);}\n.htf-nl-label{font-size:11px;font-weight:700;color:var(--htfaul);letter-spacing:2px;text-transform:uppercase;margin-bottom:14px;position:relative;}\n.htf-nl h3{font-family:'Playfair Display',serif;font-size:28px;font-weight:400;margin-bottom:12px;color:#fff;line-height:1.2;position:relative;}\n.htf-nl p{font-size:15px;color:rgba(255,255,255,.8);max-width:420px;margin:0 auto 24px;font-weight:300;position:relative;}\n.htf-nl-form{display:flex;gap:10px;max-width:420px;margin:0 auto;position:relative;}\n.htf-nl-form input{flex:1;padding:14px 18px;border:1.5px solid rgba(255,255,255,.25);border-radius:4px;background:rgba(255,255,255,.1);color:#fff;font-size:15px;}\n.htf-nl-form input::placeholder{color:rgba(255,255,255,.55);}\n.htf-nl-form button{padding:14px 24px;border-radius:4px;background:var(--htfau);color:var(--htfbk);font-size:14px;font-weight:600;border:none;cursor:pointer;}\n\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\n.htf-faq{margin-top:48px;}\n.htf-faq details{border-bottom:1px solid var(--htfg2);padding:18px 0;}\n.htf-faq summary{font-family:'Playfair Display',serif;font-size:18px;color:var(--htfbk);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;}\n.htf-faq summary::-webkit-details-marker{display:none;}\n.htf-faq summary::after{content:\"+\";color:var(--htfau);font-size:22px;font-weight:300;transition:transform .2s;}\n.htf-faq details[open] summary::after{transform:rotate(45deg);}\n.htf-faq p{margin-top:14px;font-size:15.5px;color:var(--htfg6);line-height:1.7;}\n\n\/* \u2500\u2500 AUTHOR BIO \u2500\u2500 *\/\n.htf-bio{background:var(--htfow);border-radius:8px;padding:36px;margin:64px 0 0;display:grid;grid-template-columns:120px 1fr;gap:28px;align-items:start;}\n.htf-bio-avatar{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,var(--htfg),var(--htfgd));display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:#fff;}\n.htf-bio h4{font-family:'Playfair Display',serif;font-size:22px;color:var(--htfbk);font-weight:500;margin-bottom:6px;}\n.htf-bio-tag{font-size:11px;font-weight:700;color:var(--htfau);letter-spacing:2px;text-transform:uppercase;margin-bottom:10px;}\n.htf-bio p{font-size:15px;color:var(--htfg6);line-height:1.7;font-weight:300;margin-bottom:12px;}\n.htf-bio a{color:var(--htfg);font-size:14px;font-weight:600;text-decoration:none;}\n\n\/* \u2500\u2500 SIDEBAR \u2500\u2500 *\/\n.htf-sidebar{}\n.htf-sidebar-sticky{position:sticky;top:100px;}\n.htf-sb{background:#fff;border:1px solid var(--htfg2);border-radius:6px;padding:24px 22px;margin-bottom:20px;}\n.htf-sb-label{font-size:11px;font-weight:700;color:var(--htfg);letter-spacing:2px;text-transform:uppercase;margin-bottom:14px;}\n.htf-sb-toc ol{margin:0;list-style:none;padding:0;counter-reset:stoc;}\n.htf-sb-toc li{counter-increment:stoc;padding:5px 0;font-size:14px;border-bottom:1px dashed var(--htfg1);}\n.htf-sb-toc li:last-child{border-bottom:none;}\n.htf-sb-toc li::before{content:counter(stoc,decimal-leading-zero);color:var(--htfau);font-weight:700;margin-right:10px;font-size:12px;}\n.htf-sb-toc a{color:var(--htfg6);text-decoration:none;}\n.htf-sb-toc a:hover{color:var(--htfg);}\n.htf-sb-share{display:flex;gap:10px;flex-wrap:wrap;}\n.htf-sb-share a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--htfg2);border-radius:50%;font-size:12px;font-weight:700;color:var(--htfg6);text-decoration:none;}\n.htf-sb-svc h4{font-family:'Playfair Display',serif;font-size:18px;color:var(--htfbk);font-weight:400;margin-bottom:8px;}\n.htf-sb-svc p{font-size:14px;color:var(--htfg6);line-height:1.6;margin-bottom:14px;}\n.htf-btn{display:inline-block;padding:12px 20px;background:var(--htfg);color:#fff;border-radius:4px;font-size:13px;font-weight:600;text-decoration:none;}\n\n\/* \u2500\u2500 BODY PHOTO \u2500\u2500 *\/\nfigure.htf-body-photo{margin:32px 0;}\nfigure.htf-body-photo img{width:100%;border-radius:6px;display:block;}\n\n\/* \u2500\u2500 RELATED \u2500\u2500 *\/\n.htf-related{max-width:1140px;margin:80px auto 0;padding:60px 20px 80px;border-top:1px solid var(--htfg1);}\n.htf-related-label{font-size:12px;font-weight:700;color:var(--htfau);letter-spacing:2px;text-transform:uppercase;margin-bottom:12px;text-align:center;}\n.htf-related h3{font-family:'Playfair Display',serif;font-size:34px;font-weight:400;color:var(--htfbk);text-align:center;margin-bottom:40px;}\n.htf-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}\n.htf-card{text-decoration:none;background:#fff;border:1px solid var(--htfg2);border-radius:6px;overflow:hidden;display:block;}\n.htf-card-img{aspect-ratio:16\/9;background:linear-gradient(135deg,var(--htfgd),var(--htfg));background-size:cover;background-position:center;}\n.htf-card-img.den{background-color:var(--htfgd);}\n.htf-card-img.nor{background-color:var(--htfgd);}\n.htf-card-img.swe{background-color:var(--htfgd);}\n.htf-card-body{padding:20px;}\n.htf-card-tag{font-size:11px;font-weight:700;color:var(--htfau);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:8px;}\n.htf-card-body h4{font-family:'Playfair Display',serif;font-size:18px;color:var(--htfbk);font-weight:400;margin-bottom:6px;}\n.htf-card-body p{font-size:13px;color:var(--htfg6);line-height:1.6;margin:0;}\n\n\/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n@media(max-width:900px){\n  .htf-wrap{grid-template-columns:1fr;}\n  .htf-sidebar{display:none;}\n  .htf-hero h1{font-size:38px;}\n  .htf-related-grid{grid-template-columns:1fr;}\n  .htf-bio{grid-template-columns:1fr;text-align:center;}\n  .htf-bio-avatar{margin:0 auto;}\n  .htf-nl-form{flex-direction:column;}\n  .htf-pull{font-size:20px;padding:30px 10px;}\n}\n<\/style><\/p>\n<!-- HERO --><header class=\"htf-hero\">\n<div class=\"htf-hero-inner\">\n<div class=\"htf-breadcrumb\"><a href=\"https:\/\/hungrytravelfamily.com\/blog\/\">Home<\/a> \u00a0\/\u00a0 <a href=\"https:\/\/hungrytravelfamily.com\/blog\/destinations\/\">Destinations<\/a><\/div>\n<span class=\"htf-category\">Destinations \u00b7 Denmark<\/span>\n<h1>Copenhagen Harbor Swimming Guide: <em>5 Places Locals Actually Swim<\/em><\/h1>\n<p class=\"htf-hero-deck\">We\u2019ve swum in Copenhagen harbor \u2014 and it\u2019s genuinely one of the best urban swimming experiences in Europe. Here are the five spots we\u2019d go back to, plus everything you need to plan your own swim.<\/p>\n<div class=\"htf-hero-meta\">\n<div class=\"htf-meta-author\">\n<div class=\"htf-avatar\">J&amp;A<\/div>\n<div><strong>Joona &amp; Alla<\/strong>Rovaniemi, Finland<\/div>\n<\/div>\n<span class=\"htf-dot\">\u00b7<\/span> May 2026 <span class=\"htf-dot\">\u00b7<\/span> 10 min read <span class=\"htf-dot\">\u00b7<\/span>Updated for Summer 2026<\/div>\n<div>\u00a0<\/div>\n<div class=\"htf-hero-meta\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-2869 size-full\" src=\"https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-scaled.jpg\" alt=\"Copenhagen Hungrytravelfamily\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-scaled.jpg 1920w, https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-225x300.jpg 225w, https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-768x1024.jpg 768w, https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-1152x1536.jpg 1152w, https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-1536x2048.jpg 1536w, https:\/\/hungrytravelfamily.com\/blog\/wp-content\/uploads\/2026\/05\/Copenhagen-Hungrytravelfamily-1320x1760.jpg 1320w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/div>\n<div>\u00a0<\/div>\n<\/div>\n<\/header><!-- ARTICLE + SIDEBAR -->\n<div class=\"htf-wrap\">\n<article class=\"htf-body\">\n<p>We were not expecting to swim in Copenhagen. It started as curiosity \u2014 we\u2019d heard about harbor baths and assumed they were a novelty, the kind of thing travel blogs mention but nobody actually does. Then we got there in July, saw the line at Islands Brygge, and jumped in. By the end of our trip we\u2019d found four more spots. Copenhagen harbor swimming is the real deal.<\/p>\n<p>The harbor here is clean enough to swim in \u2014 officially \u2014 and has been since the early 2000s when the city spent two decades cleaning up industrial runoff. What you get today is a network of harbor baths, open-air pools fed by harbor water, and a swimming culture that locals take seriously. This guide covers the five places we actually used.<\/p>\n<div class=\"htf-tldr\">\n<div class=\"htf-tldr-label\">Short answer<\/div>\n<p>Copenhagen harbor swimming is genuinely excellent in summer. The best spots are <strong>Islands Brygge Havnebad<\/strong> (the iconic one), <strong>Fisketorvet \/ Kalvebod B\u00f8lge<\/strong>, <strong>Sluseholmen<\/strong>, <strong>Amager Strandpark<\/strong>, and <strong>Charlotte Amalie<\/strong> \u2014 all open roughly June through August when water temperatures hit 18\u201322\u2009\u00b0C. No wetsuit needed. No fee at most spots.<\/p>\n<\/div>\n<div class=\"htf-toc\">\n<div class=\"htf-toc-label\">In this guide<\/div>\n<ol>\n<li><a href=\"#s1\">Why Copenhagen\u2019s harbor is actually clean<\/a><\/li>\n<li><a href=\"#s2\">The 5 harbor swimming spots, ranked<\/a><\/li>\n<li><a href=\"#s3\">Quick-reference: what to know before you go<\/a><\/li>\n<li><a href=\"#s4\">Best time and water temperature month-by-month<\/a><\/li>\n<li><a href=\"#s5\">Islands Brygge vs Kalvebod B\u00f8lge: which is better?<\/a><\/li>\n<li><a href=\"#s6\">Mistakes we made on our first Copenhagen swim<\/a><\/li>\n<li><a href=\"#s7\">Frequently asked questions<\/a><\/li>\n<li><a href=\"#s8\">A final word from Rovaniemi<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"s1\">Why Copenhagen\u2019s harbor is actually clean enough to swim in<\/h2>\n<h3>From industrial port to urban bathing paradise<\/h3>\n<p>As recently as the 1990s, swimming in Copenhagen harbor was illegal \u2014 not because of a rule, but because nobody would want to. The inner harbor was used for heavy industry and untreated sewage. Cleaning it up was a deliberate 15-year infrastructure project, and it worked. By 2002, when Islands Brygge Havnebad opened, the water met EU bathing water standards. Today it consistently scores \u201cexcellent\u201d on Danish environmental authority tests.<\/p>\n<p>What changed: combined sewer overflows were rerouted, industrial discharges were stopped, and a massive grey-water treatment project finished in the mid-2010s. The city now monitors water quality in real time and posts swim\/no-swim flags at each harbour bath. On the rare days after heavy rain, some spots temporarily close \u2014 but during a normal June or July, you\u2019ll find green flags nearly every day.<\/p>\n<h3>The flag system \u2014 and when to check it<\/h3>\n<ul>\n<li><strong>Green flag:<\/strong> swimming recommended. Standard on any dry week in summer.<\/li>\n<li><strong>Yellow flag:<\/strong> caution, often after rainfall. Wait 24 hours before swimming.<\/li>\n<li><strong>Red flag:<\/strong> no swimming. Rare, but happens after heavy storms when overflow systems are stressed.<\/li>\n<li><strong>Where to check:<\/strong> <em>badeinfo.dk<\/em> posts real-time status for every official harbour bath. Bookmark it before your trip.<\/li>\n<\/ul>\n<h2 id=\"s2\">The 5 Copenhagen harbor swimming spots locals actually use<\/h2>\n<h3>1. Islands Brygge Havnebad \u2014 the original and still the best<\/h3>\n<p>This is the one you\u2019ve seen in photos. Five pools directly in the harbor \u2014 two for adults, two for children, one for diving \u2014 all fed by harbor water and surrounded by a floating wooden platform. It\u2019s busy from June to August, genuinely packed on summer weekends, but that buzz is part of the appeal. Locals bring picnics, the adjacent waterfront park fills up, and it feels like the whole city decided to have the same idea at once.<\/p>\n<p>The diving board section is worth a visit even if you\u2019re not diving. There\u2019s a small spectator element to watching people either commit to a jump or quietly climb back down. We swam here twice and both times had a good time despite the crowd.<\/p>\n<h3>2. Kalvebod B\u00f8lge (Fisketorvet)<\/h3>\n<p>A 2013 structure that doubles as an urban beach and harbour bath, just north of Fisketorvet shopping center. The architecture is striking \u2014 a wave-shaped floating platform with wooden decking, shallow wading areas, and a deeper swimming zone. Less crowded than Islands Brygge, better for people who want to actually swim lengths rather than float around in a social situation. The water is the same harbor, same quality.<\/p>\n<h3>3. Sluseholmen Havnebad<\/h3>\n<p>In the Sydhavn area, further south than most visitors go, which is exactly why we like it. Locals outnumber tourists heavily. It\u2019s smaller than Islands Brygge, the facilities are simpler, and the atmosphere is more neighborhood-pool than tourist attraction. If you\u2019re staying on the south side of the city or doing a day at the Docken music venue nearby, this is the one to use.<\/p>\n<h3>4. Amager Strandpark \u2014 the beach option<\/h3>\n<p>Not strictly a harbor swim \u2014 it\u2019s an artificial beach and lagoon on the island of Amager, separated from the harbor proper. But it\u2019s only 15 minutes by metro from the center, has 4.6 km of sandy beach, and during summer the lagoon is warm, shallow, and genuinely pleasant. If you have kids, this is likely the right choice: calmer water, sandcastle-friendly, and the metro from N\u00f8rreport runs every few minutes.<\/p>\n<h3>5. Charlotte Amalie \u2014 the locals\u2019 hidden spot<\/h3>\n<p>A smaller, newer harbour bath in the \u00d8sterbro neighborhood that opened in the early 2020s. Far fewer tourists, much calmer vibe, excellent for a morning swim before exploring the city. It doesn\u2019t appear on most tourist maps, which is partly why we\u2019re including it \u2014 sometimes the best experiences are the ones where you feel like you\u2019ve accidentally ended up somewhere genuine.<\/p>\n<h2 id=\"s3\">Quick-reference: everything you need to know before you swim in Copenhagen harbor<\/h2>\n<p>Six things to have sorted before you arrive at the water:<\/p>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">01 \u2014 Check badeinfo.dk first<\/div>\n<blockquote>The real-time water quality map takes 30 seconds to check. Do it the morning of your planned swim, not at the waterfront. A red flag means no swimming \u2014 usually clears within 24\u201348 hours of heavy rain.<\/blockquote>\n<\/div>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">02 \u2014 Bring a towel and flip-flops<\/div>\n<blockquote>There are no rental towels at any harbour bath. The wooden decking gets hot in direct sun. A small pack towel weighs nothing and changes the experience entirely.<\/blockquote>\n<\/div>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">03 \u2014 Arrive early at Islands Brygge on weekends<\/div>\n<blockquote>Weekend afternoons in July see queues. Going at 9\u201310 am gets you the space before the crowd arrives. The water is actually warmer in the afternoon, but the crowd peak runs 13:00\u201317:00.<\/blockquote>\n<\/div>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">04 \u2014 Most spots are free, a few charge a small fee<\/div>\n<blockquote>Islands Brygge and Kalvebod B\u00f8lge are free entry. Some newer facilities (Charlotte Amalie, Sluseholmen) have been free, though check on arrival as this can change seasonally. Lockers at Islands Brygge cost a coin deposit.<\/blockquote>\n<\/div>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">05 \u2014 Water shoes are optional but recommended<\/div>\n<blockquote>The harbor bottom near entry points can have algae. Most people go barefoot, but if you\u2019re nervous about slippery surfaces, a cheap pair of water shoes solves it. Kids especially benefit.<\/blockquote>\n<\/div>\n<div class=\"htf-prompt\">\n<div class=\"htf-prompt-title\">06 \u2014 Transit is easy from the center<\/div>\n<blockquote>Islands Brygge is a 5-minute metro from N\u00f8rreport (M1\/M2, Islands Brygge station). Kalvebod B\u00f8lge is walkable from Copenhagen Central Station. Amager Strandpark is on the M2 (Amager Strand station). None require a car.<\/blockquote>\n<\/div>\n<div class=\"htf-nl-kit\"><style>\n.htf-nl-kit{margin:48px auto;max-width:760px;padding:60px 32px;background:linear-gradient(160deg,#2D5A3D 0%,#1a3d28 100%);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,0.18);text-align:center;}\n.htf-nl-kit .htf-nl-eyebrow{font-family:Inter,sans-serif;font-size:13px;font-weight:600;letter-spacing:4px;text-transform:uppercase;color:#C8A45A;margin:0 0 18px;}\n.htf-nl-kit h3{font-family:'Playfair Display',Georgia,serif;font-size:36px;font-weight:700;line-height:1.15;color:#fff;margin:0 0 16px;}\n.htf-nl-kit p.htf-nl-sub{font-family:Inter,sans-serif;font-size:16px;line-height:1.65;color:rgba(255,255,255,0.85);margin:0 auto 28px;max-width:520px;}\n.htf-nl-kit .formkit-form,.htf-nl-kit .seva-form{background:transparent !important;border:none !important;box-shadow:none !important;padding:0 !important;max-width:520px;margin:0 auto;}\n.htf-nl-kit .formkit-header,.htf-nl-kit .formkit-subheader{display:none !important;}\n.htf-nl-kit .formkit-fields,.htf-nl-kit .seva-fields{display:flex !important;flex-direction:row !important;flex-wrap:nowrap !important;align-items:stretch !important;gap:8px !important;margin:0 !important;padding:0 !important;list-style:none !important;width:100% !important;}\n.htf-nl-kit .formkit-field{flex:1 1 auto !important;min-width:0 !important;margin:0 !important;width:auto !important;}\n.htf-nl-kit input.formkit-input,.htf-nl-kit input[type=\"email\"],.htf-nl-kit input[type=\"text\"]{width:100% !important;height:46px !important;padding:0 16px !important;background:rgba(255,255,255,0.1) !important;border:1px solid rgba(255,255,255,0.25) !important;border-radius:4px !important;color:#fff !important;font-family:Inter,sans-serif !important;font-size:14px !important;font-weight:400 !important;outline:none !important;box-shadow:none !important;box-sizing:border-box !important;transition:border-color .2s,background .2s !important;}\n.htf-nl-kit input::placeholder{color:rgba(255,255,255,0.6) !important;}\n.htf-nl-kit input:focus{outline:none !important;box-shadow:none !important;border-color:#C8A45A !important;background:rgba(255,255,255,0.15) !important;}\n.htf-nl-kit button.formkit-submit{flex:0 0 auto !important;width:auto !important;height:46px !important;padding:0 22px !important;background:#C8A45A !important;color:#1A1917 !important;font-family:Inter,sans-serif !important;font-size:14px !important;font-weight:600 !important;letter-spacing:0.5px !important;border:1px solid #C8A45A !important;border-radius:4px !important;cursor:pointer !important;white-space:nowrap !important;outline:none !important;box-shadow:none !important;margin:0 !important;line-height:1 !important;transition:background .2s,border-color .2s !important;}\n.htf-nl-kit button.formkit-submit:hover,.htf-nl-kit button.formkit-submit:focus{background:#E8D5A0 !important;border-color:#E8D5A0 !important;outline:none !important;box-shadow:none !important;}\n.htf-nl-kit button.formkit-submit > span{color:#1A1917 !important;font-weight:600 !important;letter-spacing:0.5px !important;}\n.htf-nl-kit .formkit-powered-by-convertkit-container,.htf-nl-kit .formkit-guarantee{display:none !important;}\n.htf-nl-kit .formkit-alert{margin-top:10px !important;font-family:Inter,sans-serif !important;font-size:13px !important;color:rgba(255,255,255,0.85) !important;list-style:none !important;padding:0 !important;}\n.htf-nl-kit .formkit-alert-success{color:#E8D5A0 !important;}\n@media (max-width:520px){.htf-nl-kit{padding:48px 24px;}.htf-nl-kit h3{font-size:28px;}.htf-nl-kit .formkit-fields{flex-direction:column !important;}.htf-nl-kit button.formkit-submit{width:100% !important;}}\n<\/style>\n<div class=\"htf-nl-eyebrow\">Letters from Rovaniemi<\/div>\n<h3>Get our best travel tips in your inbox<\/h3>\n<p class=\"htf-nl-sub\">Monthly stories from Rovaniemi \u2014 Arctic tips, packing lists, and the places we keep coming back to.<\/p>\n<script async data-uid=\"af0fbe56d9\" src=\"https:\/\/hungrytravelfamily.kit.com\/af0fbe56d9\/index.js\"><\/script><\/div>\n<h2 id=\"s4\">Best time and water temperature month-by-month<\/h2>\n<ul>\n<li><strong>May:<\/strong> the harbour baths typically open in late May. Water temperatures are around 12\u201315\u2009\u00b0C \u2014 brisk, but manageable for a short swim. Weather can be unpredictable.<\/li>\n<li><strong>June:<\/strong> water warms to 16\u201318\u2009\u00b0C. Long evenings (sunset after 10 pm), crowds are building but not yet at peak. Our favorite month for swimming in Copenhagen.<\/li>\n<li><strong>July:<\/strong> the busiest month. Water reaches 19\u201322\u2009\u00b0C. Peak crowds at Islands Brygge. Best for families and those who want warm water.<\/li>\n<li><strong>August:<\/strong> still warm, crowds thin slightly after mid-August. Water stays above 18\u2009\u00b0C into late August. Excellent swimming weather.<\/li>\n<li><strong>September:<\/strong> most harbour baths close in mid-September. Water cools rapidly. Dedicated cold-water swimmers continue at a few spots, but the official season is essentially over.<\/li>\n<\/ul>\n<div class=\"htf-pull\">The Danes swim in weather that would make most visitors hesitate. Don\u2019t wait for it to be perfect \u2014 just go.<\/div>\n<h2 id=\"s5\">Islands Brygge vs Kalvebod B\u00f8lge: which Copenhagen harbour bath is better?<\/h2>\n<p>This is the question we\u2019ve been asked most often, and the honest answer is: it depends on what you want from the experience.<\/p>\n<ul>\n<li><strong>Islands Brygge Havnebad is better if:<\/strong> you want the iconic experience, you\u2019re visiting with friends, you want the energy of a busy urban beach, or you\u2019re doing a picnic afternoon in the adjacent park. It\u2019s the classic Copenhagen harbour swim and it earns the reputation.<\/li>\n<li><strong>Kalvebod B\u00f8lge is better if:<\/strong> you want to actually swim lengths, prefer a less crowded atmosphere, are staying near Central Station, or find the Islands Brygge crowd overwhelming. The wave architecture is genuinely cool and the spot is underrated by tourists.<\/li>\n<li><strong>Both are equally good for:<\/strong> water quality (both flag the same harbor), ease of access by public transit, cost (free entry), and the basic Copenhagen experience of being in the water surrounded by city.<\/li>\n<li><strong>Our verdict:<\/strong> Islands Brygge first visit, Kalvebod B\u00f8lge second. Both if you have the time.<\/li>\n<\/ul>\n<div class=\"htf-callout\">\n<div class=\"htf-callout-label\">Related reading<\/div>\n<h4>3 Days in Copenhagen: A Couple\u2019s Summer Weekend Itinerary<\/h4>\n<p>Planning the full trip around your harbor swim? Our three-day Copenhagen guide covers the neighborhoods, bike routes, and the other things we\u2019d do again.<\/p>\n<a href=\"https:\/\/hungrytravelfamily.com\/blog\/destinations\/3-days-copenhagen-itinerary\/\">Read the full guide \u2192<\/a><\/div>\n<h2 id=\"s6\">Mistakes we made on our first Copenhagen harbor swim<\/h2>\n<ul>\n<li><strong>Not checking badeinfo.dk before leaving the hotel.<\/strong> We walked 25 minutes to Islands Brygge on a yellow-flag day after overnight rain. The swim was technically allowed but the water felt different. Check the flag first \u2014 it saves time and disappointment.<\/li>\n<li><strong>Arriving at Islands Brygge at 2 pm on a Saturday.<\/strong> Peak crowd. The changing rooms were a queue. Next time: morning swim, or choose a weekday.<\/li>\n<li><strong>Forgetting that the harbor floor near ladders is slippery.<\/strong> There\u2019s algae. This is true everywhere. Slow down when descending the entry ladders, especially in flip-flops.<\/li>\n<li><strong>Underestimating the sun.<\/strong> Open water in direct sun with no shade cover at midday is a burn risk even in Denmark. Bring sunscreen and apply it before the swim.<\/li>\n<li><strong>Skipping Amager Strandpark because it sounded \u201cnot authentic enough.\u201d<\/strong> Wrong call. The lagoon is lovely and the beach atmosphere is genuinely relaxing. Don\u2019t be a snob about artificial beaches.<\/li>\n<li><strong>Not pairing the swim with a coffee and pastry afterwards.<\/strong> Every harbour bath has at least one nearby bakery or kiosk. The ritual of a wet-hair pastry and coffee after a morning swim is one of the better things in life.<\/li>\n<\/ul>\n<h2 id=\"s7\">Frequently asked questions about Copenhagen harbor swimming<\/h2>\n<div class=\"htf-faq\"><details>\n<summary>Is it safe to swim in Copenhagen harbor?<\/summary>\n<p>Yes \u2014 Copenhagen harbour consistently meets EU \u201cexcellent\u201d bathing water standards during summer. The city cleaned up the harbour over 15 years, and monitoring is ongoing. Check the real-time flag at <em>badeinfo.dk<\/em> before you go; avoid swimming for 24 hours after heavy rain when some overflow risk exists.<\/p>\n<\/details><details>\n<summary>When do the Copenhagen harbour baths open?<\/summary>\n<p>Most harbour baths open in late May or early June and close in mid-September. Islands Brygge typically runs June 1 to September 15. Exact dates vary by year \u2014 check the official Copenhagen harbour bath websites for current-season hours, which are usually posted in April.<\/p>\n<\/details><details>\n<summary>Is harbor swimming free in Copenhagen?<\/summary>\n<p>Islands Brygge Havnebad and Kalvebod B\u00f8lge are free to use. Some newer facilities have a small changing-room or locker fee. Amager Strandpark is also free. Budget essentially nothing for the swim itself, though a coffee and pastry after is practically mandatory.<\/p>\n<\/details><details>\n<summary>How warm is the water at Copenhagen harbour baths?<\/summary>\n<p>Water temperatures peak in July and August at 18\u201322\u2009\u00b0C, which is genuinely comfortable for open-water swimming. June runs 15\u201318\u2009\u00b0C \u2014 brisk but very swimmable. The first weeks of May are around 12\u201314\u2009\u00b0C, suitable mainly for cold-water enthusiasts. Most people swim comfortably without a wetsuit from June onwards.<\/p>\n<\/details><details>\n<summary>Which Copenhagen harbour bath is best for families with children?<\/summary>\n<p>Islands Brygge Havnebad has dedicated children\u2019s pools that are shallower and calmer than the main swimming area \u2014 good for younger kids. For older children who want a beach experience with more space to run around, Amager Strandpark is the better option, with its long sandy beach and gentle lagoon.<\/p>\n<\/details><details>\n<summary>Can you swim in Copenhagen harbor at night?<\/summary>\n<p>Some harbour baths have extended summer hours until 8\u201310 pm, but late-night swimming is not officially permitted at most facilities. A few cold-water swimming clubs do early-morning dips year-round, but these are organized clubs. During the official season, stick to posted hours \u2014 the long summer evenings mean you can swim well past 7 pm in peak season anyway.<\/p>\n<\/details><\/div>\n<\/article>\n<\/div>\n<div class=\"htf-wrap\">\n<article class=\"htf-body\">\n<h2 id=\"s8\">A final word from Rovaniemi<\/h2>\n<p>We came to Copenhagen as a couple who thinks about swimming in cold water quite a lot \u2014 we live in Rovaniemi, where the river is technically swimmable in June if you\u2019re determined. But Copenhagen harbor swimming is something different. It\u2019s not cold-water therapy or a local quirk. It\u2019s a genuine urban amenity that the city built and maintains, and that Copenhageners use without ceremony because it\u2019s simply part of how the city works in summer.<\/p>\n<p>The five spots in this guide are genuinely different in character. Islands Brygge is the social swim. Kalvebod is the architecture swim. Sluseholmen is the neighborhood swim. Amager Strandpark is the family swim. Charlotte Amalie is the \u201cyou found a secret\u201d swim. Pick based on what you actually want from the experience, not on what the travel blogs rank highest.<\/p>\n<p>And yes, check badeinfo.dk first.<\/p>\n<div class=\"htf-bio\">\n<div class=\"htf-bio-avatar\">J&amp;A<\/div>\n<div>\n<div class=\"htf-bio-tag\">Written by<\/div>\n<h4>Joona &amp; Alla<\/h4>\n<p>A Finnish-Ukrainian couple living in Rovaniemi, Finland. Joona is a marketing professional in Lapland tourism; Alla is an AI Engineer. Together they\u2019ve traveled to 21 countries across Europe and Asia \u2014 always hungry for the next experience, never just ticking off sights.<\/p>\n<a href=\"https:\/\/hungrytravelfamily.com\/blog\/about-us\/\">Read our full story \u2192<\/a><\/div>\n<\/div>\n<\/article>\n<aside class=\"htf-sidebar\">\n<div class=\"htf-sidebar-sticky\">\n<div class=\"htf-sb htf-sb-toc\">\n<div class=\"htf-sb-label\">Contents<\/div>\n<ol>\n<li><a href=\"#s1\">Why the harbor is clean<\/a><\/li>\n<li><a href=\"#s2\">The 5 swimming spots<\/a><\/li>\n<li><a href=\"#s3\">Quick-reference checklist<\/a><\/li>\n<li><a href=\"#s4\">Best time &amp; temperatures<\/a><\/li>\n<li><a href=\"#s5\">Islands Brygge vs Kalvebod<\/a><\/li>\n<li><a href=\"#s6\">Mistakes we made<\/a><\/li>\n<li><a href=\"#s7\">FAQ<\/a><\/li>\n<li><a href=\"#s8\">Final word<\/a><\/li>\n<\/ol>\n<\/div>\n<div class=\"htf-sb\">\n<div class=\"htf-sb-label\">Share this story<\/div>\n<div class=\"htf-sb-share\"><a title=\"Pinterest\" href=\"#\">Pin<\/a> <a title=\"Facebook\" href=\"#\">f<\/a> <a title=\"X \/ Twitter\" href=\"#\">X<\/a> <a title=\"Threads\" href=\"#\">T<\/a><\/div>\n<\/div>\n<div class=\"htf-sb htf-sb-svc\">\n<div class=\"htf-sb-label\">Work with us<\/div>\n<h4>AI-assisted content for travel brands<\/h4>\n<p>Joona &amp; Alla help travel brands write destination content that both humans and AI love.<\/p>\n<a class=\"htf-btn\" href=\"https:\/\/hungrytravelfamily.com\/blog\/collaborations\/\">See our services<\/a><\/div>\n<\/div>\n<\/aside>\n<\/div>\n<!-- \/wp:html --><!-- wp:html -->\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is it safe to swim in Copenhagen harbor?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes \u2014 Copenhagen harbour consistently meets EU 'excellent' bathing water standards during summer. Check the real-time flag at badeinfo.dk before you go; avoid swimming for 24 hours after heavy rain.\"}},{\"@type\":\"Question\",\"name\":\"When do the Copenhagen harbour baths open?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Most harbour baths open in late May or early June and close in mid-September. Islands Brygge typically runs June 1 to September 15.\"}},{\"@type\":\"Question\",\"name\":\"Is harbor swimming free in Copenhagen?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Islands Brygge Havnebad and Kalvebod B\u00f8lge are free to use. Some newer facilities have a small changing-room or locker fee. Amager Strandpark is also free.\"}},{\"@type\":\"Question\",\"name\":\"How warm is the water at Copenhagen harbour baths?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Water temperatures peak in July and August at 18\u201322\u00b0C. June runs 15\u201318\u00b0C. Most people swim comfortably without a wetsuit from June onwards.\"}},{\"@type\":\"Question\",\"name\":\"Which Copenhagen harbour bath is best for families with children?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Islands Brygge Havnebad has dedicated children's pools. For older children who want a beach experience, Amager Strandpark is the better option.\"}},{\"@type\":\"Question\",\"name\":\"Can you swim in Copenhagen harbor at night?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Some harbour baths have extended summer hours until 8\u201310 pm, but late-night swimming is not officially permitted at most facilities. During the official season, stick to posted hours.\"}}]}<\/script><\/p>\n<!-- \/wp:html -->\n<!-- HTF-RELATED-POSTS-V1 -->\n<!-- wp:html -->\n<style>\n.htf-related-wrap{max-width:1100px;margin:-20px auto 30px;padding:0 20px;font-family:'Inter',sans-serif;}\n.htf-related-wrap .htf-related-eyebrow{font-family:'Inter',sans-serif;text-transform:uppercase;letter-spacing:3px;font-size:12px;color:#C8A45A;font-weight:600;text-align:center;margin:0 0 10px;}\n.htf-related-wrap h2.htf-related-title{font-family:'Playfair Display',serif;font-weight:600;font-size:32px;color:#2D5A3D;text-align:center;margin:0 0 8px;line-height:1.2;}\n.htf-related-wrap .htf-related-sub{font-family:'Inter',sans-serif;font-size:15px;color:#5b6b62;text-align:center;margin:0 0 32px;font-style:italic;}\n.htf-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}\n.htf-related-card{background:#fff;border:1px solid #eee6d8;border-radius:6px;overflow:hidden;transition:transform .25s ease,box-shadow .25s ease;display:flex;flex-direction:column;text-decoration:none;color:inherit;}\n.htf-related-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(45,90,61,.12);border-color:#C8A45A;}\n.htf-related-thumb{aspect-ratio:16\/10;background:#f3efe4 center\/cover no-repeat;display:block;}\n.htf-related-body{padding:18px 20px 22px;display:flex;flex-direction:column;flex:1;}\n.htf-related-cat{font-family:'Inter',sans-serif;text-transform:uppercase;letter-spacing:2px;font-size:10px;color:#C8A45A;font-weight:600;margin-bottom:8px;}\n.htf-related-h{font-family:'Playfair Display',serif;font-weight:600;font-size:18px;line-height:1.35;color:#2D5A3D;margin:0 0 12px;}\n.htf-related-card:hover .htf-related-h{color:#1c3d28;}\n.htf-related-read{margin-top:auto;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;color:#2D5A3D;letter-spacing:.5px;}\n.htf-related-read::after{content:\" \u2192\";color:#C8A45A;transition:transform .2s ease;display:inline-block;}\n.htf-related-card:hover .htf-related-read::after{transform:translateX(4px);}\n.htf-related-skeleton{background:linear-gradient(90deg,#f3efe4 25%,#ede5d2 50%,#f3efe4 75%);background-size:200% 100%;animation:htfshim 1.4s infinite;}\n@keyframes htfshim{0%{background-position:200% 0;}100%{background-position:-200% 0;}}\n@media(max-width:860px){.htf-related-grid{grid-template-columns:1fr;gap:18px;}.htf-related-wrap h2.htf-related-title{font-size:26px;}}\n<\/style>\n<section class=\"htf-related-wrap\" id=\"htf-related-posts\" data-htf-current-id=\"1402\">\n  <p class=\"htf-related-eyebrow\">More stories from the Hungrytravelfamily<\/p>\n  <h2 class=\"htf-related-title\">Keep reading<\/h2>\n  <p class=\"htf-related-sub\">You may also like to read these.<\/p>\n  <div class=\"htf-related-grid\" id=\"htf-related-grid\">\n    <a class=\"htf-related-card\" href=\"#\"><span class=\"htf-related-thumb htf-related-skeleton\"><\/span><div class=\"htf-related-body\"><span class=\"htf-related-cat\">&nbsp;<\/span><h3 class=\"htf-related-h\">Loading\u2026<\/h3><span class=\"htf-related-read\">Read<\/span><\/div><\/a>\n    <a class=\"htf-related-card\" href=\"#\"><span class=\"htf-related-thumb htf-related-skeleton\"><\/span><div class=\"htf-related-body\"><span class=\"htf-related-cat\">&nbsp;<\/span><h3 class=\"htf-related-h\">Loading\u2026<\/h3><span class=\"htf-related-read\">Read<\/span><\/div><\/a>\n    <a class=\"htf-related-card\" href=\"#\"><span class=\"htf-related-thumb htf-related-skeleton\"><\/span><div class=\"htf-related-body\"><span class=\"htf-related-cat\">&nbsp;<\/span><h3 class=\"htf-related-h\">Loading\u2026<\/h3><span class=\"htf-related-read\">Read<\/span><\/div><\/a>\n  <\/div>\n<\/section>\n<script>\n(function(){\n  var root=document.getElementById('htf-related-posts');\n  if(!root) return;\n  var grid=document.getElementById('htf-related-grid');\n  var currentId=parseInt(root.getAttribute('data-htf-current-id'),10)||0;\n  var api='\/blog\/wp-json\/wp\/v2\/posts?_embed=wp:featuredmedia,wp:term&per_page=100&_fields=id,link,title,featured_media,_links,_embedded';\n  fetch(api).then(function(r){return r.json();}).then(function(posts){\n    if(!Array.isArray(posts)||!posts.length){root.style.display='none';return;}\n    posts=posts.filter(function(p){return p.id!==currentId && (p._embedded && p._embedded['wp:featuredmedia'] && p._embedded['wp:featuredmedia'][0] && p._embedded['wp:featuredmedia'][0].source_url);});\n    if(posts.length<3){root.style.display='none';return;}\n    \/\/ Shuffle (Fisher-Yates) and take 3\n    for(var i=posts.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=posts[i];posts[i]=posts[j];posts[j]=t;}\n    var pick=posts.slice(0,3);\n    grid.innerHTML=pick.map(function(p){\n      var media=p._embedded['wp:featuredmedia'][0];\n      var img=(media.media_details&&media.media_details.sizes&&(media.media_details.sizes.medium_large||media.media_details.sizes.large||media.media_details.sizes.medium))||{source_url:media.source_url};\n      var cat='';\n      try{ var terms=p._embedded['wp:term']; if(terms&&terms[0]&&terms[0][0]) cat=terms[0][0].name||''; }catch(e){}\n      var title=(p.title&&p.title.rendered)||'';\n      return '<a class=\"htf-related-card\" href=\"'+p.link+'\">'+\n             '<span class=\"htf-related-thumb\" style=\"background-image:url(\\''+img.source_url+'\\')\"><\/span>'+\n             '<div class=\"htf-related-body\">'+\n             '<span class=\"htf-related-cat\">'+(cat||'Travel')+'<\/span>'+\n             '<h3 class=\"htf-related-h\">'+title+'<\/h3>'+\n             '<span class=\"htf-related-read\">Read the story<\/span>'+\n             '<\/div><\/a>';\n    }).join('');\n  }).catch(function(){root.style.display='none';});\n})();\n<\/script>\n<!-- \/wp:html -->\n<!-- \/HTF-RELATED-POSTS-V1 -->\n\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home \u00a0\/\u00a0 Destinations Destinations \u00b7 Denmark Copenhagen Harbor Swimming Guide: 5 Places Locals Actually Swim We\u2019ve swum in Copenhagen harbor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2869,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[54,1330,1328],"tags":[97,255,101,98,106,99],"class_list":["post-1402","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destinations","category-copenhagen","category-denmark","tag-copenhagen","tag-copenhagen-harbor-swimming","tag-copenhagen-summer","tag-denmark","tag-denmark-summer","tag-harbour-swimming"],"_links":{"self":[{"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/posts\/1402","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/comments?post=1402"}],"version-history":[{"count":4,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/posts\/1402\/revisions"}],"predecessor-version":[{"id":2872,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/posts\/1402\/revisions\/2872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/media\/2869"}],"wp:attachment":[{"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/media?parent=1402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/categories?post=1402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hungrytravelfamily.com\/blog\/wp-json\/wp\/v2\/tags?post=1402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}