Courseiva
SystemPrivileged EXEC

show startup-config

Displays the configuration stored in NVRAM that will be loaded the next time the device boots up.

Definition: show startup-config is a Cisco IOS privileged exec command. Displays the saved configuration stored in NVRAM that loads on next device boot.

Overview

The `show startup-config` command is a fundamental diagnostic and verification tool in Cisco IOS that displays the configuration stored in non-volatile RAM (NVRAM). This is the configuration that the device will load upon the next reboot, making it critical for understanding what changes will persist after a reload. Unlike `show running-config`, which shows the currently active configuration in memory, `show startup-config` reveals the saved configuration that survives power cycles.

This distinction is vital for network engineers: a common pitfall is making changes to the running configuration without saving them to startup-config, causing those changes to be lost after a reboot. The command is typically used during maintenance windows to verify that intended changes have been properly saved, or before a reload to confirm the device will boot with the expected configuration. It also serves as a baseline for comparing against the running configuration to detect unsaved changes.

In the broader workflow, after configuring a device, an engineer should always verify with `show startup-config` to ensure the configuration is saved. The command requires privileged EXEC mode (enable mode), and its output can be lengthy; it is often piped to other commands like `include` or `section` to filter specific parts. Importantly, `show startup-config` does not affect the running configuration or device operation—it is purely a read-only display.

Understanding this command is essential for CCNA and CCNP candidates because it reinforces the concept of configuration storage and the importance of the `copy running-config startup-config` command. The output is identical in syntax to the running configuration, but it reflects the state at the last save. In high-availability environments, verifying the startup configuration on both supervisors is a best practice before performing a switchover or reload.

Syntax·Privileged EXEC
show startup-config

When to Use This Command

  • Verify configuration was saved successfully
  • Compare saved vs running config to find unsaved changes
  • Review config before reload to confirm no unwanted changes will persist
  • Backup verification after copying running-config to startup-config

Command Examples

Compare startup vs running

R1# show startup-config
Using 2048 out of 253952 bytes
!
version 15.4
hostname R1
!
enable secret 5 $1$abc$xyz
!
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
!
end

Output shows NVRAM usage and saved configuration. If this differs from show running-config, there are unsaved changes.

Understanding the Output

The first line shows NVRAM utilization in bytes. The configuration shown is what will load on next reboot. If startup-config differs from running-config, the device has unsaved changes that will be lost on reload.

Configuration Scenarios

Verify Saved Configuration After a Change

After making changes to the running configuration, an engineer needs to confirm that the changes have been saved to NVRAM so they persist after a reboot.

Topology

Single router R1 with no specific topology required.

Steps

  1. 1.Step 1: Enter privileged EXEC mode: R1> enable
  2. 2.Step 2: Display the startup configuration: R1# show startup-config
  3. 3.Step 3: Look for the specific configuration lines that were changed (e.g., interface IP address, routing protocol).
  4. 4.Step 4: If the changes are not present, save the running configuration: R1# copy running-config startup-config
  5. 5.Step 5: Re-verify with show startup-config to confirm the changes are now saved.
Configuration
! No configuration changes are made in this scenario; only verification is performed.
R1# show startup-config
Building configuration...
Current configuration : 1234 bytes
!
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface GigabitEthernet0/1
 ip address 10.0.0.1 255.255.255.252
 duplex auto
 speed auto
!
ip route 0.0.0.0 0.0.0.0 192.168.1.254
!
end

Verify: The output should show the saved configuration. If the changes are present, they are saved. If not, they will be lost on reload.

Watch out: A common mistake is assuming that changes made in configure terminal are automatically saved. They are not; you must explicitly issue 'copy running-config startup-config' or 'write memory'.

Compare Running and Startup Configurations Before a Reload

Before reloading a router for maintenance, an engineer wants to ensure there are no unsaved changes that could cause the device to boot with an unintended configuration.

Topology

Single router R1 with no specific topology required.

Steps

  1. 1.Step 1: Enter privileged EXEC mode: R1> enable
  2. 2.Step 2: Display the running configuration: R1# show running-config
  3. 3.Step 3: Display the startup configuration: R1# show startup-config
  4. 4.Step 4: Compare the two outputs manually or use a diff tool. Look for differences in interface configurations, routing protocols, ACLs, etc.
  5. 5.Step 5: If differences exist, decide whether to save the running config or revert changes. To save: R1# copy running-config startup-config. To revert: reload without saving (caution: unsaved changes will be lost).
Configuration
! Example showing a difference: running config has an additional static route.
R1# show running-config | include ip route
ip route 0.0.0.0 0.0.0.0 192.168.1.254
ip route 10.10.10.0 255.255.255.0 192.168.1.253

R1# show startup-config | include ip route
ip route 0.0.0.0 0.0.0.0 192.168.1.254

Verify: The outputs show that the running config has an extra static route (10.10.10.0/24) that is not saved. The engineer must decide whether to save or remove it.

Watch out: Forgetting to compare both configurations can lead to unexpected behavior after a reload. Always verify before a planned reboot.

Troubleshooting with This Command

When troubleshooting configuration issues, `show startup-config` is invaluable for determining whether a problem is caused by unsaved changes or a corrupted startup configuration. A healthy startup configuration should be syntactically correct and match the intended baseline. Common indicators of problems include: the device booting with unexpected settings (e.g., missing VLANs, incorrect IP addresses), which suggests the startup configuration differs from what was intended.

To diagnose, first compare `show startup-config` with `show running-config`. If they match, the issue likely lies in the running configuration itself or in the device's operation. If they differ, the startup configuration may be outdated or corrupted.

Another symptom is a device that fails to boot properly; in such cases, the startup configuration might be missing critical lines or contain errors. During boot, if the startup configuration is corrupted, the device may enter ROMmon mode or load a default configuration. In that scenario, you can use `show startup-config` from ROMmon (if available) or examine the configuration register to force the device to ignore the startup config.

For step-by-step diagnostics: 1) Check the startup configuration for any obvious syntax errors or missing commands. 2) Compare it to a known-good backup. 3) If the startup config is corrupted, restore from a backup using `copy tftp: startup-config` or manually re-enter commands. 4) After restoring, verify with `show startup-config` and then reload. Correlating with other commands: `show version` shows the reason for last reload and uptime; `show reload` indicates a scheduled reload; `show running-config` shows the current state. If the device is behaving unexpectedly but the startup config looks correct, the problem may be in the running config (unsaved changes) or in hardware.

Also, use `debug` commands sparingly; for configuration issues, `debug config` can show configuration changes in real time, but it is resource-intensive. In summary, `show startup-config` is the first command to check when a device does not boot as expected or when changes are lost after a reload.

CCNA Exam Tips

1.

show startup-config reads from NVRAM — this is what loads on boot

2.

If startup-config and running-config differ, config was changed but not saved

3.

erase startup-config + reload = factory reset

4.

No startup-config output means NVRAM is empty — device will boot to setup mode

Common Mistakes

Assuming running and startup configs are always the same

Forgetting to compare both after making changes

Erasing startup-config without intending a factory reset

show startup-config vs show running-config

The show startup-config and show running-config commands both display device configuration, but they reflect different states. Beginners often confuse them because both show configuration details, yet one shows the saved configuration in NVRAM and the other the currently running configuration in DRAM.

Aspectshow startup-configshow running-config
SourceNVRAM (non-volatile)DRAM (volatile)
PersistencePersists across reloadsLost on reload unless saved
Effect on deviceUsed at next bootCurrently active
Typical useVerify saved config before reloadView current operational state
Common follow-upcopy running-config startup-configcopy running-config startup-config (to save)

Use show startup-config when you want to verify the configuration that will be loaded after the next reload.

Use show running-config when you want to see the current active configuration, typically after making changes or troubleshooting.

Platform Notes

In IOS-XE (e.g., Catalyst 9000 switches), the command `show startup-config` behaves identically to classic IOS, but the output may include additional sections like `platform` or `service` configurations specific to IOS-XE. The syntax is the same. In NX-OS (e.g., Nexus switches), the equivalent command is `show startup-config` as well, but NX-OS also uses `show running-config` and `show startup-config` similarly.

However, NX-OS stores the startup configuration in a file called `startup-config` in the bootflash. There is no difference in syntax. For ASA firewalls, the command is `show startup-config` (or `show start` for short).

ASA uses a similar concept but the configuration is stored in a file called `startup-config` in flash. In IOS-XR, the equivalent is `show startup-config` but the configuration is stored in a different format (XML-based) and the command may show the configuration in a hierarchical view. In IOS-XR, you can also use `show configuration` to view the committed configuration.

For older IOS versions (12.x), the output format is slightly different (e.g., no `Building configuration...` line in some versions). In 15.x and 16.x, the output is consistent. On some platforms, the startup configuration may be compressed; the command decompresses it automatically.

There are no privilege level differences beyond requiring privileged EXEC mode (level 15).

Related Commands

Practice for the CCNA 200-301

Test your knowledge with practice questions covering all CCNA 200-301 exam domains.

Practice CCNA 200-301 Questions