diff --git a/layouts/_shortcodes/tab.html b/layouts/_shortcodes/tab.html
index 888d231..cd11fdb 100644
--- a/layouts/_shortcodes/tab.html
+++ b/layouts/_shortcodes/tab.html
@@ -1,4 +1,7 @@
-{{- $group := printf "tabs-%v" (.Parent.Store.Get "id") -}}
+{{- if not .Ordinal -}}{{- /* first tab sets group ID */ -}}
+ {{- .Parent.Store.Set "id" (partial "docs/text/shortcode-id" .Parent) -}}
+{{- end -}}
+{{- $group := printf "tabs-%d" (.Parent.Store.Get "id") -}}
{{- $tab := printf "%s-%d" $group .Ordinal -}}
{{- /* remove whitespaces */ -}}
diff --git a/layouts/_shortcodes/tabs.html b/layouts/_shortcodes/tabs.html
index 15e397f..907d01a 100644
--- a/layouts/_shortcodes/tabs.html
+++ b/layouts/_shortcodes/tabs.html
@@ -1,4 +1,3 @@
-{{- .Store.Set "id" (partial "docs/text/shortcode-id" .) -}}
{{- $attributes := partial "docs/text/mapper" (dict
"attributes" (cond .IsNamedParams .Params dict)
"merge" (dict