What is zero-phase filtering and forward-backward filtering? I am pretty familiar with IIR and FIR filtering and I have implemented them in my several projects. However, recently i found something called zero phase filtering. I have tried to understand it but not going well. All i know is that zero phase filtering is filtering that do not produce any phase delay and distortion 


Is it right?


I have understood that FIR have a constant delay for a group signal while IIR have a non linear delay based on the frequency, so it will distort the signal phase.so there is a zero phase IIR to overcome the cons


How does the zero phase IIR work? (Needs an overview and maybe some examples)


And i have read about forward backward filtering that also remove the delay and distortion of filtering


How does it work?
Is it one of the zero phase filtering method?
It said that it can be done in offline filtering. What is offline filtering?


Thank you
Zero-phase filtering is a non-causal procedure, so it cannot be done in real time, only offline (or pseudo real-time, i.e., with a sufficient delay). A zero-phase filter needs to have a purely real-valued frequency response, and, consequently, it must have an impulse response that is even with respect to the time index $n=0$, i.e., it is non-causal.

Zero phase filtering with IIR filters is achieved with forward-backward filtering, as implemented in Matlab's filtfilt function. The resulting total frequency response is the squared magnitude of the original IIR filter's frequency response. Since the squared magnitude is real-valued, the resulting filter is a zero-phase filter. Of course there's a delay because you have to feed the time-reversed output of the first filter pass back to the input of the filter, after which you need to time-reverse the output. More details about forward-backward filtering can be found in this answer.