{"id":74379,"date":"2026-04-26T21:00:00","date_gmt":"2026-04-26T13:00:00","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=74379"},"modified":"2026-04-20T18:26:15","modified_gmt":"2026-04-20T10:26:15","slug":"debug-stopped-docker-container","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/","title":{"rendered":"How to Debug a Stopped Docker Container"},"content":{"rendered":"<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.docker.com\/get-started\/overview\/\">Docker containers<\/a> are easy to build and run. But they could also suddenly stop for many reasons. The tricky part often is figuring out why.<\/p>\n<p>This guide covers practical ways to debug a stopped Docker container, from checking logs and exit codes to preserving its state before you restart anything.<\/p>\n<h2>Check container status and logs<\/h2>\n<p>When a container stops, your first stop should always be the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.docker.com\/reference\/cli\/docker\/logs\/\">Docker logs<\/a>. Docker keeps a record of everything that was written to stdout and stderr while the container was running.<\/p>\n<p>First, let\u2019s see all containers, including stopped ones:<\/p>\n<pre>\r\ndocker ps -a\r\n<\/pre>\n<p>Look for your container in the list. Note its name or container ID.<\/p>\n<figure>\n        <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg\" alt=\"docker ps -a showing stopped container list\" width=\"1000\" height=\"600\">\n    <\/figure>\n<p>Then, check its logs:<\/p>\n<pre>\r\ndocker logs [container_name_or_id]\r\n<\/pre>\n<p>This often reveals the immediate cause. Maybe your application threw an exception, or a dependency failed to start. If the logs don\u2019t show anything obvious, don\u2019t worry. We have more tools.<\/p>\n<h3>Understanding exit codes<\/h3>\n<p>As you can see from the screenshot above, every Docker container exits with a code. Exit code <code>0<\/code> means success (the container completed its task). Any other number indicates an error. You can see the exit code in the <code>docker ps -a<\/code> output, or get it directly:<\/p>\n<pre>\r\ndocker inspect [container_name_or_id] --format='{{.State.ExitCode}}'\r\n<\/pre>\n<p>Common exit codes:<\/p>\n<table>\n<thead>\n<tr>\n<th>Exit Code<\/th>\n<th>Signal<\/th>\n<th>Likely Cause<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>N\/A<\/td>\n<td>Success. Container finished task<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>N\/A<\/td>\n<td>General application error<\/td>\n<\/tr>\n<tr>\n<td>137<\/td>\n<td>SIGKILL (9)<\/td>\n<td>Out-of-memory killer or force stop<\/td>\n<\/tr>\n<tr>\n<td>143<\/td>\n<td>SIGTERM (15)<\/td>\n<td>Graceful shutdown request<\/td>\n<\/tr>\n<tr>\n<td>139<\/td>\n<td>SIGSEGV (11)<\/td>\n<td>Segmentation fault (memory access)<\/td>\n<\/tr>\n<tr>\n<td>255<\/td>\n<td>N\/A<\/td>\n<td>Exit status out of range<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If you see exit code <code>137<\/code>, your container likely hit a memory limit and was killed by the system. Exit code 143 usually means something asked Docker to stop the container gracefully.<\/p>\n<p>Before you try to bring the container back up, there is one mistake worth avoiding.<\/p>\n<h2>Don\u2019t restart too soon<\/h2>\n<p>The usual instinct is to run <code>docker start [container]<\/code> or reach for <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.docker.com\/compose\/\">Docker Compose<\/a>. That can erase useful evidence, especially if the container was not configured with persistent storage. You could lose:<\/p>\n<ul>\n<li><strong>Application logs<\/strong> that weren\u2019t captured by Docker\u2019s logging driver<\/li>\n<li><strong>Temporary files<\/strong> created during the failed run<\/li>\n<li><strong>Crash dumps<\/strong> or core files<\/li>\n<li><strong>Database transaction logs<\/strong> (if running a database)<\/li>\n<li><strong>Configuration changes<\/strong> made at runtime<\/li>\n<\/ul>\n<p>So before you even think about restarting, you need to preserve the evidence.<\/p>\n<h2>Preserve logs before they disappear<\/h2>\n<p>Docker keeps logs for stopped containers, but there are limits. By default, Docker uses the \u201cjson-file\u201d logging driver with no size limit, but in production, you might have log rotation or different drivers.<\/p>\n<p>First, save the logs to a file immediately:<\/p>\n<pre>\r\ndocker logs [container_name_or_id] > container_logs.txt\r\n<\/pre>\n<p>For containers with a lot of output, you might want to limit to the last N lines:<\/p>\n<pre>\r\ndocker logs --tail 1000 [container_name_or_id] > recent_logs.txt\r\n<\/pre>\n<p>If you suspect the issue happened a while ago, you can include the timestamps:<\/p>\n<pre>\r\ndocker logs --timestamps [container_name_or_id] | grep -i \"error\\|exception\\|fail\"\r\n<\/pre>\n<h2>Save container filesystem state<\/h2>\n<p>When a container stops, its filesystem still exists unless it was started with <code>--rm<\/code>.<\/p>\n<p>You can extract files from it using the following commands:<\/p>\n<table>\n<thead>\n<tr>\n<th>Command<\/th>\n<th>What it preserves<\/th>\n<th>Best for<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>docker cp<\/code><\/td>\n<td>Specific files\/directories<\/td>\n<td>Quick extraction of logs, configs, temp files<\/td>\n<\/tr>\n<tr>\n<td><code>docker export<\/code><\/td>\n<td>Entire filesystem (as tar archive)<\/td>\n<td>Complete backup for later forensic analysis<\/td>\n<\/tr>\n<tr>\n<td><code>docker commit<\/code><\/td>\n<td>Everything: files, environment, metadata, state<\/td>\n<td>Perfect snapshot for team sharing or delayed analysis<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Copy files out before restarting<\/h3>\n<p>Use <code>docker cp<\/code> to extract important directories:<\/p>\n<pre>\r\ndocker cp [container_name_or_id]:\/var\/log .\/container_logs\r\ndocker cp [container_name_or_id]:\/tmp .\/container_tmp\r\ndocker cp [container_name_or_id]:\/etc .\/container_etc\r\n<\/pre>\n<p>Look for application-specific directories too. If you know your app writes to <code>\/app\/logs<\/code> or <code>\/data<\/code>, copy those.<\/p>\n<h3>Create a full filesystem backup<\/h3>\n<p>For critical debugging situations, create a complete backup of the container\u2019s filesystem:<\/p>\n<pre>\r\ndocker export [container_name_or_id] > container_fs.tar\r\n<\/pre>\n<p>This creates a tar archive of the entire container filesystem. You can explore it later:<\/p>\n<pre>\r\ntar -tf container_fs.tar | head -20  # List first 20 files\r\ntar -xf container_fs.tar .\/var\/log   # Extract just the log directory\r\n<\/pre>\n<h3>Creating a snapshot with docker commit<\/h3>\n<p>You can also use <code>docker commit<\/code>.<\/p>\n<p>This command creates a new Docker image from a stopped container, preserving <em>everything<\/em> including files, environment, metadata. It\u2019s like taking a snapshot of the container exactly as it stopped.<\/p>\n<pre>\r\ndocker commit [container_name_or_id] debug-snapshot\r\n<\/pre>\n<p>Now you have a new image called <code>debug-snapshot<\/code>. You can start it, explore it, even push it to a registry for someone else to examine:<\/p>\n<pre>\r\n# Start the snapshot container\r\ndocker run -it debug-snapshot \/bin\/bash\r\n\r\n# List files inside (from outside)\r\ndocker run --rm debug-snapshot ls -la \/var\/log\r\n\r\n# Push to Docker Hub for team analysis\r\ndocker tag debug-snapshot yourusername\/debug-snapshot\r\ndocker push yourusername\/debug-snapshot\r\n<\/pre>\n<p>This works well in a <strong>production environment<\/strong> because it preserves the container state completely. You can analyze it later, even if the original container gets removed or rebuilt.<\/p>\n<p>But keep in mind that committed images can be large as they include all container layers. Use them judiciously, and clean up when you\u2019re done with the following command:<\/p>\n<pre>\r\ndocker rmi debug-snapshot\r\n<\/pre>\n<h2>Make future debugging easier<\/h2>\n<p>For smoother debugging next time, use persistent volumes for logs and data, set up the right logging driver, and consider scripting the preservation steps you use most often.<\/p>\n<p>When a container stops, save the evidence first, then restart it.<\/p>\n<p>    <!-- END HERE --><\/p>","protected":false},"excerpt":{"rendered":"<p>A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3392],"tags":[],"topic":[],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Debug a Stopped Docker Container - Hongkiat<\/title>\n<meta name=\"description\" content=\"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Debug a Stopped Docker Container\" \/>\n<meta property=\"og:description\" content=\"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-26T13:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"How to Debug a Stopped Docker Container\",\"datePublished\":\"2026-04-26T13:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/\"},\"wordCount\":724,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/debug-stopped-docker-container\\\/docker-ps-a.jpg\",\"articleSection\":[\"Coding\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/\",\"name\":\"How to Debug a Stopped Docker Container - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/debug-stopped-docker-container\\\/docker-ps-a.jpg\",\"datePublished\":\"2026-04-26T13:00:00+00:00\",\"description\":\"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/debug-stopped-docker-container\\\/docker-ps-a.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/debug-stopped-docker-container\\\/docker-ps-a.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/debug-stopped-docker-container\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Debug a Stopped Docker Container\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Debug a Stopped Docker Container - Hongkiat","description":"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/","og_locale":"en_US","og_type":"article","og_title":"How to Debug a Stopped Docker Container","og_description":"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.","og_url":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2026-04-26T13:00:00+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg","type":"","width":"","height":""}],"author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"How to Debug a Stopped Docker Container","datePublished":"2026-04-26T13:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/"},"wordCount":724,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg","articleSection":["Coding"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/","url":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/","name":"How to Debug a Stopped Docker Container - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg","datePublished":"2026-04-26T13:00:00+00:00","description":"A practical guide to finding out why a Docker container stopped, from reading logs and exit codes to preserving the container state before restarting it.","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/debug-stopped-docker-container\/docker-ps-a.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/debug-stopped-docker-container\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Debug a Stopped Docker Container"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-jlF","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=74379"}],"version-history":[{"count":1,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74379\/revisions"}],"predecessor-version":[{"id":74380,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/74379\/revisions\/74380"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=74379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=74379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=74379"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=74379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}