diff --git a/Modern Development/Service Portal Widgets/custom404/HTML.js b/Modern Development/Service Portal Widgets/custom404/HTML.js
new file mode 100644
index 0000000000..85a8564627
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/HTML.js
@@ -0,0 +1,10 @@
+
+
${This page could not be found. Based on your search we have found below valid pages}
+
+
diff --git a/Modern Development/Service Portal Widgets/custom404/README.md b/Modern Development/Service Portal Widgets/custom404/README.md
new file mode 100644
index 0000000000..da1c1082cb
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/README.md
@@ -0,0 +1,15 @@
+**How to use**
+1. Add this widget to new portal page.
+2. Add the page in "sp_portal" record in 404 field.
+
+**Use Case**
+1. Some organizations do not want to show OOB 404 page having game but want to show the suggestions with correct pages.
+
+**Result**
+1. This code will search the 3 letters of page_id from URL and will suggest correct pages.
+2. The correct links will open the pages in next tab.
+
+
+
+
+
diff --git a/Modern Development/Service Portal Widgets/custom404/css.js b/Modern Development/Service Portal Widgets/custom404/css.js
new file mode 100644
index 0000000000..a368d6bae2
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/css.js
@@ -0,0 +1,15 @@
+.heading-message{
+ color:red;
+}
+.page-container{
+ display: flex;
+ justify-content: space-evenly;
+ flex-direction:cloumn;
+}
+ul{
+ padding: 2rem;
+ list-style-type: disclosure-closed;
+}
+li{
+ padding:1rem;
+}
diff --git a/Modern Development/Service Portal Widgets/custom404/server.js b/Modern Development/Service Portal Widgets/custom404/server.js
new file mode 100644
index 0000000000..a9f02c48a1
--- /dev/null
+++ b/Modern Development/Service Portal Widgets/custom404/server.js
@@ -0,0 +1,20 @@
+(function() {
+ /*
+ This script will get the 3 characters of page_id from url and suggest valid pages.
+ */
+ data.pageArr = []; // array to store related pages
+ var pageId = $sp.getParameter('id').toString(); // get page id from url
+ // get 3 letters of page id
+ if (pageId && pageId.length() > 3)
+ pageId = pageId.substring(0, 3);
+
+ var relatedPages = new GlideRecord('sp_page');
+ relatedPages.addEncodedQuery('idLIKE' + pageId);
+ relatedPages.query();
+ while (relatedPages.next()) {
+ var tempList = {}; // temporary object.
+ tempList.name = relatedPages.getValue('title');
+ tempList.url = '/' + $sp.getValue('url_suffix') + '?id=' + relatedPages.getValue('id');
+ data.pageArr.push(tempList); // add related suggested pages to array
+ }
+})();