A variety of practical methods have recently been introduced for ﬁnding maximally sparse representations from overcomplete dictionaries, a central computational task in compressive sensing applications as well as numerous others. Many of the underlying algorithms rely on iterative reweighting schemes that produce more focal estimates as optimization progresses. Two such variants are iterative reweighted `1 and `2 minimization; however, some properties related to convergence and sparse estimation, as well as possible generalizations, are still not clearly understood or fully exploited. In this paper, we make the distinction between separable and non-separable iterative reweighting algorithms. The vast majority of existing methods are separable, meaning the weighting of a given coefﬁcient at each iteration is only a function of that individual coefﬁcient from the previous iteration (as opposed to dependency on all coefﬁcients). We examine two such separable reweighting schemes: an `2 method from Chartrand and Yin (2008) and an `1 approach from Cande`s et al. (2008), elaborating on convergence results and explicit connections between them. We then explore an interesting non-separable alternative that can be implemented via either `2 or `1 reweighting and maintains several desirable properties relevant to sparse recovery despite a highly non-convex underlying cost function. For example, in the context of canonical sparse estimation problems, we prove uniform superiority of this method over the minimum `1 solution in that, (i) it can never do worse when implemented with reweighted `1, and (ii) for any dictionary and sparsity proﬁle, there will always exist cases where it does better. These results challenge the prevailing reliance on strictly convex (and separable) penalty functions for ﬁnding sparse solutions. We then derive a new non-separable variant with similar properties that exhibits further performance improvements in empirical tests. Finally, we address natural extensions to the group sparsity problems and non-negative sparse coding.