diff --git a/src/components/utility-list/_guidance.hbs b/src/components/utility-list/_guidance.hbs
new file mode 100644
index 00000000..7f3cbd2b
--- /dev/null
+++ b/src/components/utility-list/_guidance.hbs
@@ -0,0 +1,4 @@
+---
+title: Utility list
+layout: blank-layout.hbs
+---
\ No newline at end of file
diff --git a/src/components/utility-list/_utility-list.hbs b/src/components/utility-list/_utility-list.hbs
new file mode 100644
index 00000000..955eeb2b
--- /dev/null
+++ b/src/components/utility-list/_utility-list.hbs
@@ -0,0 +1,28 @@
+
{{#if title}}
+
{{title}}
{{/if}}
+
{{#if copy}}
+ -
+ link
+ Copy link
+
{{/if}}{{#if print}}
+ -
+ print
+ Print this page
+
{{/if}}{{#if download}}
+ -
+ download
+ Download as PDF
+
{{/if}}{{#if share}}
+ -
+ share
+ Share this page
+
+
{{/if}}
+
+
\ No newline at end of file
diff --git a/src/components/utility-list/_utility-list.scss b/src/components/utility-list/_utility-list.scss
new file mode 100644
index 00000000..d284affb
--- /dev/null
+++ b/src/components/utility-list/_utility-list.scss
@@ -0,0 +1,163 @@
+.nsw-utility-list {
+ @include component-spacing();
+
+ &__title {
+ @include font-size('lg');
+ font-weight: var(--nsw-font-bold);
+ padding-bottom: rem(16px);
+
+ @include breakpoint('md') {
+ padding-bottom: rem(24px);
+ }
+ }
+
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+ }
+
+ &__item {
+ margin: 0;
+ padding: rem(16px);
+ display: flex;
+ gap: $grid-gutters;
+ align-items: center;
+ text-decoration: none;
+ cursor: pointer;
+ font-weight: var(--nsw-font-bold);
+ border-bottom: 1px solid var(--nsw-grey-04);
+ color: var(--nsw-brand-dark);
+
+ @include font-size('sm');
+
+ &:hover {
+ @include nsw-hover;
+ outline-width: 0;
+ }
+
+ &:focus {
+ @include nsw-focus;
+ }
+
+ &:last-child {
+ border-bottom: unset;
+ }
+
+ .nsw-section--invert & {
+ color: var(--nsw-text-light);
+ }
+
+ svg {
+ width: rem(24px);
+ height: rem(24px);
+
+ path {
+ fill: var(--nsw-white);
+ }
+ }
+ }
+
+ .nsw-toggletip {
+ border-bottom: unset;
+
+ &__header {
+ display: none;
+ }
+
+ &__content {
+ display: flex;
+ gap: $grid-gutters;
+ padding: rem(16px);
+
+ a {
+ display: flex;
+ padding: rem(8px);
+ border-radius: var(--nsw-border-radius);
+ text-decoration: none;
+ }
+
+ span:not(.nsw-toggletip__element .nsw-material-icons) {
+ color: var(--nsw-brand-dark);
+ }
+ }
+ }
+
+ &--dark {
+ .nsw-utility-list__item {
+ background-color: rgba(var(--nsw-palette-blue-01-rgb), 1);
+ color: var(--nsw-text-light);
+
+ span:not(.nsw-toggletip__element .nsw-material-icons) {
+ color: var(--nsw-text-light);
+ }
+
+ svg {
+ path {
+ fill: var(--nsw-brand-dark);
+ }
+ }
+
+ &:hover {
+ background-color: rgba(var(--nsw-palette-blue-01-rgb), 0.8);
+ }
+
+ &:focus {
+ outline: solid 3px var(--nsw-focus);
+ outline-offset: 0;
+ }
+
+ &:visited {
+ color: var(--nsw-text-visited);
+ }
+ }
+ }
+
+ &--light {
+ background-color: var(--nsw-brand-light);
+ color: var(--nsw-text-dark);
+
+ .nsw-utility-list__item {
+ border-color: var(--nsw-off-white);
+
+ svg {
+ path {
+ fill: var(--nsw-brand-dark);
+ }
+ }
+ }
+ }
+
+ &--off-white {
+ background-color: var(--nsw-off-white);
+
+ .nsw-utility-list__item {
+ svg {
+ path {
+ fill: var(--nsw-brand-dark);
+ }
+ }
+
+ span {
+ color: var(--nsw-brand-dark);
+ }
+ }
+ }
+
+ &--horizontal {
+ @include breakpoint('md') {
+ display: flex;
+
+ ul {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ }
+
+ li {
+ flex: 1 1 auto;
+ border-bottom: unset;
+ }
+ }
+ }
+}
diff --git a/src/components/utility-list/blank.hbs b/src/components/utility-list/blank.hbs
new file mode 100644
index 00000000..1ed7d730
--- /dev/null
+++ b/src/components/utility-list/blank.hbs
@@ -0,0 +1,18 @@
+---
+title: Utility list
+width: narrow
+page: true
+model: ../../components/utility-list/json/utility-list.json
+---
+
+{{#>_layout-container}}
+
+{{#each model}}
+ {{#each this}}
+ {{#each this}}
+ {{>_utility-list}}
+ {{/each}}
+ {{/each}}
+{{/each}}
+
+{{/_layout-container}}
\ No newline at end of file
diff --git a/src/components/utility-list/index.hbs b/src/components/utility-list/index.hbs
new file mode 100644
index 00000000..2a2cd3d9
--- /dev/null
+++ b/src/components/utility-list/index.hbs
@@ -0,0 +1,33 @@
+---
+title: Utility list
+width: narrow
+tabs: true
+directory: utility-list
+intro:
+model: ../../components/utility-list/json/utility-list.json
+meta-description:
+meta-index: true
+---
+
+
+
+
+{{#each model}}
+
+ {{#each this}}
+ {{@key}}
+ {{#each this}}
+{{#>_docs-example separated=true}}
+{{>_utility-list}}
+{{/_docs-example}}
+ {{/each}}
+ {{/each}}
+
+{{/each}}
+
+
\ No newline at end of file
diff --git a/src/components/utility-list/json/utility-list.json b/src/components/utility-list/json/utility-list.json
new file mode 100644
index 00000000..ff6b1170
--- /dev/null
+++ b/src/components/utility-list/json/utility-list.json
@@ -0,0 +1,590 @@
+{
+ "off-white": {
+ "Vertical": {
+ "all": {
+ "id": "off-white-1",
+ "align": "vertical",
+ "theme": "off-white",
+ "copy": true,
+ "print": true,
+ "download": true,
+ "share": true,
+ "social": {
+ "facebook": {
+ "icon": "