Home » Do we “exit”, “quit” or “close” an application?

Do we “exit”, “quit” or “close” an application?


If you are developing a Windows application, the correct term to use is “Exit”. This is spelt out in Microsoft’s Design apps for the Windows desktop guide, under the “Standard Menu Bars” section.

If you are developing a Mac application, the correct term to use is “Quit”. (Your menu item must read “Quit AppName“.) This is spelt out in Apple’s OS X Human Interface Guidelines, under “The App Menu” section.

In general, you should follow the platform’s user-interface guidelines when you are developing apps so that your app is consistent with all other apps in the same platform, so as to reduce your app’s complexity and learning curve for your customers.

The Terms

The following table summarises the conventional terms, which are platform dependent.

A table showing the various terms used

On Windows, you run an application, then exit it. Ditto for Unix command line tools. However, both old documentation and pretty much all windows 8 documentation uses Open/Close.

On a Mac (which deep inside is Unix-based) you open an application, but then quit it. 

You close a window or a tab (both you can also open).

Sources: Mac Basic, OS X User Experience Guidelines, Windows 7 Using Programs, Windows 8 Getting Around your PC Guide.

The Argument

Consider the following when deciding on a term to use:

  • Run – A nearly pure programmers’ term. Technical novices shall not understand why you ‘run’ programs.
  • Exit – Some users may think (based on real world experience) that when you exit something you can return to it.
  • Close – Same as the previous one, when you close something you can re-open it. There might be some confusion with closing windows here as well. Notice that you can have two types of behaviours depending on the OS:
    • The application truly terminates (like would be on Windows 98).
    • Or it just moves to the background (like on Windows 8 – where you can really open/close/quit). So I would suggest keeping this term close to this type of behaviour.
  • Open – The term is generally not ambiguous.
  • Quit – Should signify to the user that the application does terminate completely (rather than stay at the background).


I don’t know if your user base is international but I guess it is of varying levels of English and varying levels of IT skills. Exit is universal for leave, quit and go away (remember not everyone thinks like us geeks!)

Take these users:

The grandma who has just got her first laptop

I want this to go away … quit [negative connotations, implies it is final, sometimes forever]

I want this to go away … exit [can be related to in real life]

The person who speaks enough English to get by

I want this to go away … leave [localised terminology, can also mean “to leave something in a room” – confusing to those not fluent in the context]

I want this to go away … exit [globally recognised terminology, doesn’t need context – can stand alone strongly]

I am sure there are more examples I could bore you with but I guess you get the gist. Just think about it this way, what sign did you see driving down the highway?

Also this is a screenshot of a random selection of windows I have open – don’t reinvent the wheel 🙂
enter image description here

Update for Mac Users:
I would say firstly go with what is right for the platform, but if it is a web app where that is not an option say I would also apply this example

  • On a Windows Quit has the same connotations as a above
  • On a Mac(/other) Exit is not the norm, however it is still expected and I beleive this would still be ok in terms of breaking the flow. It isn’t like you are replacing Quit with Renounce for example!

Related Solutions

How to generate a random string?

My favorite way to do it is by using /dev/urandom together with tr to delete unwanted characters. For instance, to get only digits and letters: tr -dc A-Za-z0-9 </dev/urandom | head -c 13 ; echo '' Alternatively, to include more characters from the OWASP...

How to copy a file from a remote server to a local machine?

The syntax for scp is: If you are on the computer from which you want to send file to a remote computer: scp /file/to/send username@remote:/where/to/put Here the remote can be a FQDN or an IP address. On the other hand if you are on the computer wanting to...

What is the difference between curl and wget?

The main differences are: wget's major strong side compared to curl is its ability to download recursively. wget is command line only. There's no lib or anything, but curl's features are powered by libcurl. curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP,...

Using ‘sed’ to find and replace [duplicate]

sed is the stream editor, in that you can use | (pipe) to send standard streams (STDIN and STDOUT specifically) through sed and alter them programmatically on the fly, making it a handy tool in the Unix philosophy tradition; but can edit files directly, too,...

How do I loop through only directories in bash?

You can specify a slash at the end to match only directories: for d in */ ; do echo "$d" done If you want to exclude symlinks, use a test to continue the loop if the current entry is a link. You need to remove the trailing slash from the name in order for -L to...

How to clear journalctl

The self maintenance method is to vacuum the logs by size or time. Retain only the past two days: journalctl --vacuum-time=2d Retain only the past 500 MB: journalctl --vacuum-size=500M man journalctl for more information. You don't typically clear the journal...

How can I run a command which will survive terminal close?

One of the following 2 should work: $ nohup redshift & or $ redshift & $ disown See the following for a bit more information on how this works: man nohup help disown Difference between nohup, disown and & (be sure to read the comments too) If your...

Get exit status of process that’s piped to another

bash and zsh have an array variable that holds the exit status of each element (command) of the last pipeline executed by the shell. If you are using bash, the array is called PIPESTATUS (case matters!) and the array indicies start at zero: $ false | true $...

Execute vs Read bit. How do directory permissions in Linux work?

When applying permissions to directories on Linux, the permission bits have different meanings than on regular files. The read bit (r) allows the affected user to list the files within the directory The write bit (w) allows the affected user to create, rename,...

What are the pros and cons of Vim and Emacs? [closed]

I use both, although if I had to choose one, I know which one I would pick. Still, I'll try to make an objective comparison on a few issues. Available everywhere? If you're a professional system administrator who works with Unix systems, or a power user on...

How do I use pushd and popd commands?

pushd, popd, and dirs are shell builtins which allow you manipulate the directory stack. This can be used to change directories but return to the directory from which you came. For example start up with the following directories: $ pwd /home/saml/somedir $ ls...

How to forward X over SSH to run graphics applications remotely?

X11 forwarding needs to be enabled on both the client side and the server side. On the client side, the -X (capital X) option to ssh enables X11 forwarding, and you can make this the default (for all connections or for a specific connection) with ForwardX11 yes...

What does “LC_ALL=C” do?

LC_ALL is the environment variable that overrides all the other localisation settings (except $LANGUAGE under some circumstances). Different aspects of localisations (like the thousand separator or decimal point character, character set, sorting order, month,...

What is a bind mount?

What is a bind mount? A bind mount is an alternate view of a directory tree. Classically, mounting creates a view of a storage device as a directory tree. A bind mount instead takes an existing directory tree and replicates it under a different point. The...

Turn off buffering in pipe

Another way to skin this cat is to use the stdbuf program, which is part of the GNU Coreutils (FreeBSD also has its own one). stdbuf -i0 -o0 -e0 command This turns off buffering completely for input, output and error. For some applications, line buffering may...

Can less retain colored output?

Use: git diff --color=always | less -r --color=always is there to tell git to output color codes even if the output is a pipe (not a tty). And -r is there to tell less to interpret those color codes and other escape sequences. Use -R for ANSI color codes only....

How do I copy a folder keeping owners and permissions intact?

sudo cp -rp /home/my_home /media/backup/my_home From cp manpage: -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links,...

Can I zip an entire folder using gzip?

No. Unlike zip, gzip functions as a compression algorithm only. Because of various reasons some of which hearken back to the era of tape drives, Unix uses a program named tar to archive data, which can then be compressed with a compression program like gzip,...

How do I check package version using apt-get / aptitude?

apt-get You can run a simulation to see what would happen if you upgrade/install a package: apt-get -s install <package> To see all possible upgrades, run a upgrade in verbose mode and (to be safe) with simulation, press n to cancel: apt-get -V -s upgrade...