Question: I have Echo's buried in code all over my notebook, I'd like a flag to turn them all on or off globally.

* Sure `Unprotect[Echo];Echo=Identity` would disable them, but then you can't re-enable them
* A solution that works for all the various types of Echos (EchoName, EchoEvaluation, ...) would be nice
* `QuietEcho` doesn't work because I'd have to write it add it around every blob of code

Answer: 
[`Echo`](http://reference.wolfram.com/language/ref/Echo) has an autoload, so you need to make sure the symbol is autoloaded before you modify its values:

```
DisableEcho[] := (Unprotect[Echo]; Echo; Echo = #&; Protect[Echo];)

EnableEcho[] := (Unprotect[Echo]; Echo=.; Protect[Echo];)

```

Test:

```
DisableEcho[]

Echo[3]

EnableEcho[]

Echo[3, "EchoLabel"]

```

> 
> 3
> 
> 
> 

> 
> EchoLabel 3
> 
> 
> 

> 
> 3
> 
> 
>
I would recommend using `QuietEcho` rather than redefining `Echo`:

```
In[62]:= $Pre = QuietEcho;

In[63]:= Echo[3]

Out[63]= 3

```

This has the added benefit of disabling printing for all `Echo` functions, not just `Echo`.