153

In Windows 7, I know you can do Windows + Left to put a window in the left half of the screen. Is there a feature that will do top and bottom?

2
  • @RockPaperLizard You also must remember that Windows 7 is really old and is the only OS to have a native snap feature, to date. I have to find a third-party "extension" type script to do this on Mac, for instance. Also, Windows 10 has Snap for every direction, including corners! In other words, I think the Windows team really does try on the UX side. UI sometimes is a personality test, but UX is something Windows is historically pretty good at. Jun 23, 2016 at 12:28
  • @Joseph I actually agree that MS has had many successes in the UX arena. They were even been willing to explore new territory, although not commercially successful, with Microsoft Bob. Unfortunately, their successes are marred by many abject failures, the most notable being Windows 8. I don't know if the failure of that project was their UX team or management's refusal to listen to them. Jun 23, 2016 at 17:17

21 Answers 21

90

No. The only snap options available are:

  • left half snap (Windows + left)
  • right half snap (Windows + right)
  • full screen height snap (Windows + shift + up)
  • maximized snap (Windows + up)
  • "un-snap" (Windows + down)
  • snap to next monitor / display (Windows + shift + (left or right))

Edit: other awesome combinations you might like:

  • minimize all (Windows + m)
  • minimize all but active window (Windows + Home)
  • Aero peek (view Desktop, all Windows become transparent) (Windows + space)
6
  • Neat, I was trying to figure out how to keep the vertical position fixed but allow horizontal movement without using left/right screen snap and having to readjust window width, and full screen height snap does exactly what I wanted.
    – JAB
    Feb 5, 2014 at 12:42
  • 6
    Oh, just discovered that double-clicking the top edge of the title bar (i.e. when the vertical double-ended arrow is displayed) also does screen height snap.
    – JAB
    Feb 5, 2014 at 16:50
  • 9
    In Windows 10 there is now another option: After snapping to the left or right, you can press up or down, e.g. to snap to the top-left. Not what the OP wanted, but maybe helpful for others.
    – Andre
    May 19, 2016 at 14:11
  • no "full screen width snap?" -_-
    – Shayan
    Feb 14, 2019 at 19:08
  • For the downvoter, this is the correct answer for Windows 7. Windows 10 has new snap options... Feb 15, 2019 at 21:07
65

I use the following steps to accomplish this:

  1. Windows + D (to minimize all windows)
  2. then use my mouse to place the windows I want to stack in the general placement on each monitor (don't bother resizing them)
  3. then right click on the taskbar and select "Show windows stacked" from the context menu then restore any other windows that I want

Note: You must minimize any windows that you don't want stacked. This is what step 1 is intended to do.

4
  • 1
    This is really useful. I know this since win 98 but I've never actually used it in win 7, because in win XP and prior versions you can select taskbar buttons to choose which windows to stack but that doesn't work anymore in Windows 7 so when I select the option it'll stack all windows on screen. Blog technet: did you know: show windows stacked, cascaded or side by side
    – phuclv
    Aug 19, 2016 at 3:42
  • This is useful, but it will stack all windows in all monitors.
    – Leo
    Dec 12, 2016 at 1:14
  • This still works for Windows 10 as well. Sep 23, 2017 at 8:32
  • @Leo - and across all Desktops too. Interesting :) Jul 19, 2018 at 18:49
24

WindowSpace provides this functionality. To do what you're asking for:

  • Go to the "Moving and Resizing" tab in Settings
  • For "Top edge:", choose "Move to the top side"
  • For "Bottom edge:", choose "Move to the bottom side"

Screenshot:

screenshot

3
  • 11
    Is the $25 license key required at some point?
    – ruffin
    Jan 11, 2016 at 14:09
  • 2
    I prefer AquaSnap (its free or costs 9 dollar for multi monitor): youtube.com/watch?v=bOVOEebpiWc But since Windows 10 its not need anymore because the most important features are part of the OS, now.
    – mgutt
    Dec 12, 2016 at 7:36
  • 1
    AquaSnap is now $18 (if you use multiple monitors), and it does many things Win10 doesn't, such as top/bottom snap and tiling. Very cool.
    – isherwood
    Jun 18, 2018 at 21:24
24

I wrote a little AutoHotKey script to snap the windows top and bottom because I was frustrated about this too. You can download it from my website: http://www.pixelchef.net/how-snap-windows-horizontally-windows-7

; Move window up (Windows + Shift + UP ... NOTE must maximize window first)
+#Up::
  WinGetPos,X,Y,W,H,A,,,
  WinMaximize
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  ; if this is greater than 1, we're on the secondary (right) monitor. This
  ;   means the center of the active window is a positive X coordinate
  if ( X + W/2 > 0 ) {
  SysGet, MonitorWorkArea, MonitorWorkArea, 1
  WinMove,A,,X,0 , , (MonitorWorkAreaBottom/2)
  }
  else {
  SysGet, MonitorWorkArea, MonitorWorkArea, 2
  WinMove,A,,X,0 , , (MonitorWorkAreaBottom/2)
  }
return

; Move window down (Windows + Shift + DOWN ... NOTE must maximize window first)
+#Down::
  WinGetPos,X,Y,W,H,A,,,
  WinMaximize
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  ; if this is greater than 1, we're on the secondary (right) monitor. This
  ;   means the center of the active window is a positive X coordinate
  if ( X + W/2 > 0 ) {
  SysGet, MonitorWorkArea, MonitorWorkArea, 1
  WinMove,A,,X,MonitorWorkAreaBottom/2 , , (MonitorWorkAreaBottom/2)
  }
  else {
  SysGet, MonitorWorkArea, MonitorWorkArea, 2
  WinMove,A,,X,MonitorWorkAreaBottom/2 , , (MonitorWorkAreaBottom/2)
  }
return
4
  • It works, but also opens the start screen in Windows 8.1. How to remedy to this issue? Aug 12, 2015 at 12:38
  • 2
    This is exactly what I was hoping to find. Thank you! I've noticed the command doesn't change the width of the window. Any way to automatically go full-screen width when it snaps up/down? Mar 11, 2016 at 15:24
  • 1
    This does not work for me on Windows 10. I have 3 monitors, which of 2 are in vertical mode. You're explicitly talking about 2 work areas, not sure if this is the cause. Also you should mention what key combo you're supposed to press in this answer for people who don't know the AHK syntax Apr 6, 2016 at 8:10
  • 2
    It only works partly on my Windows 7 with one horizontal and one vertical monitor. Perfectly on the horizontal monitor, but on the vertical it seems to take the height from the horizontal one.
    – hardmooth
    Aug 5, 2016 at 6:19
10

I don't have a windows 7 machine in front of me currently, but ever since Windows 95 (or even before possibly), there has been the option to tile windows horizontally. Minimize everything but two windows you want to view top and bottom, right click the task bar, and select Tile Windows horizontally. It will size each window to take up half the vertical screen area. This is not useful to do to a single window, and as another answer stated, there is no keyboard shortcut for it, but I find it handy sometimes.

Correction: on Windows 7, this is called "Show windows stacked"

10

Similar to northben, I also wrote an AutoHotKey script, albeit a bit differently so I thought it deserved its own answer. This script should work with any number of monitors or monitor orientations.

The commands are bound to Windows + Ctrl + Up and Down instead of Shift so as not to interfere with the existing Windows + Shift + Up.

This works similar to full screen height snap (Windows + Shift + Up) in that the window retains its horizontal position and width. This can easily be changed to work similarly to left half or right half snap (Windows + Left or Right) by uncommenting the ; WinMaximize, A line. If you want to keep the default behavior, but sometimes use the half snap behavior, just maximize the window before snapping.

Works with Windows 7 64-bit and AutoHotKey v1.1.14.03.

;-------------------------------------------------------------------;
; Returns the maximum or minimum value for any number of inputs
; i.e. Max(5,4,7,10) will return 10
;-------------------------------------------------------------------;
Min(params*)
{
  r := params[1]
  for index, param in params
    if (param < r)
      r := param
  return r
}
Max(params*)
{
  r := params[1]
  for index, param in params
    if (param > r)
      r := param
  return r
}

;-------------------------------------------------------------------;
; WindowsKey+Ctrl+Up / WindowsKey+Ctrl+Down
; Resizes window to half the screen height and moves it to the top
; or bottom of whichever screen has the largest overlap.
; By default, the window retains its horizontal (x) position and
; width.  To change this, uncomment the WinMaximize line.
;-------------------------------------------------------------------;
UpDownSnap(Direction)
{
  ; WinMaximize, A
  WinGetPos, x, y, w, h, a, , ,
  SysGet , Count, MonitorCount
  refArea := 0
  Loop, %count%
  {
    SysGet, m, MonitorWorkArea, %A_Index%
    xo := Max(0, Min(x + w, mRight) - Max(x, mLeft))
    yo := Max(0, Min(y + h, mBottom) - Max(y, mTop))
    area := xo * yo
    if (area > refArea)
    {
      monTop := mTop
      monBottom := mBottom
      refArea := area
    }
  }

  ; If the refArea is still equal to 0, the window does
  ; not overlap with any monitors. Wat?
  if (refArea > 0)
  {
    if (direction = 1)
      newY := monTop
    Else
      newY := (monBottom - monTop) / 2 + monTop
    WinMove , a, , x, newY, w, (monBottom - monTop) / 2
  }
}
^#Up::UpDownSnap(1)
^#Down::UpDownSnap(0)
7
  • 1
    I wish this would have worked. I am getting The following variable name contains an illegal character: "params*". For now I am using @northben's script
    – bits
    Feb 14, 2015 at 23:15
  • Thanks for this script. Super useful. I found that it wouldn't load until I removed the space between the UpDownSnap function name and the parenthesis. Jun 10, 2015 at 15:04
  • Maybe that was also bits problem above. Interestingly, my own script does not have the space; I'm not sure how it got there. I have removed it, thanks. Jun 10, 2015 at 18:01
  • Works well in Windows 8.1 :-) Aug 12, 2015 at 12:41
  • 2
    @JasonClement if you uncomment that line, it maximized to the entire monitor (like a plain old maximize). My solution only maximizes width, keeping the 50% height.
    – Zee
    Dec 29, 2017 at 16:03
8

The best program I've ever used that accomplishes exactly this + more is WinSplit Revolution: http://winsplit-revolution.com/

I highly recommend it, as it is extremely simple to use and it even works well with multiple monitors.

Demo video: http://winsplit-revolution.com/screenshots/videos-demos

This application is freeware and released under Creative Commons Attribution-Non Commercial-No Derivative Works 3.0.

EDIT:

It appears WinSplit is no longer available, the website has been taken over by Digital Creations AS, which has their own version of this type of software, and is no longer free

2
6

Fixed a bug in Jason Clement's solution. When the window snaps vertically, previously it would not also take up the width of the monitor. It would just stay at the current window width, but would snap to 1/2 monitor vertically. With this fix, it snaps to 50% vertical height up or down and 100% horizontal width of the monitor.

Also, for those who may not know AHK...

  1. Download AutoHotKey
  2. Create a text file in notepad. Paste the code into it. Save it with the correct extension for AutoHotKey, e.g. "VerticalSnap.ahk"
  3. Right click on the file from Explorer, choose "Compile script"
  4. The compile should create a "VerticalSnap.exe" file in that directory.
  5. Open run.exe, type in "shell:startup" and hit Enter.
  6. A new Explorer window should open up to the Startup folder.
  7. Copy/paste the .exe file into this Startup folder.
  8. On next bootup, this script should be running. You can use CRTL+WINDOWS+UPARROW or +DOWNARROW to snap to the top of bottom half of your monitor. Note that the window must not be maximized for this to work.

Hope that helps, and thanks Jason!

;-------------------------------------------------------------------;
; Returns the maximum or minimum value for any number of inputs
; i.e. Max(5,4,7,10) will return 10
;-------------------------------------------------------------------;
Min(params*)
{
  r := params[1]
  for index, param in params
    if (param < r)
      r := param
  return r
}
Max(params*)
{
  r := params[1]
  for index, param in params
    if (param > r)
      r := param
  return r
}

;-------------------------------------------------------------------;
; WindowsKey+Ctrl+Up / WindowsKey+Ctrl+Down
; Resizes window to half the screen height and moves it to the top
; or bottom of whichever screen has the largest overlap.
; By default, the window retains its horizontal (x) position and
; width.  To change this, uncomment the WinMaximize line.
;-------------------------------------------------------------------;
UpDownSnap(Direction)
{
  ; WinMaximize, A
  WinGetPos, x, y, w, h, a, , ,
  SysGet , Count, MonitorCount
  refArea := 0
  Loop, %count%
  {
    SysGet, m, MonitorWorkArea, %A_Index%
    xo := Max(0, Min(x + w, mRight) - Max(x, mLeft))
    yo := Max(0, Min(y + h, mBottom) - Max(y, mTop))
    area := xo * yo
    if (area > refArea)
    {
      monTop := mTop
      monBottom := mBottom
      monLeft := mLeft
      monRight := mRight
      refArea := area
    }
  }

  ; If the refArea is still equal to 0, the window does
  ; not overlap with any monitors. Wat?
  if (refArea > 0)
  {
    if (direction = 1)
      newY := monTop
    Else
      newY := (monBottom - monTop) / 2 + monTop
    WinMove , a, , monLeft, newY, (monRight - monLeft), (monBottom - monTop) / 2
  }
}
^#Up::UpDownSnap(1)
^#Down::UpDownSnap(0)
2
  • You forgot to change the comment in the script, but hopefully someone will approve my edit. Nice find, this works reliably in windows 10.
    – Domino
    Feb 18, 2020 at 23:50
  • If you're having issues, try changing the shortcut to LCtrl+LWin+LAlt to really avoid conflicts with existing shortcuts. <^<#<!Up::UpDownSnap(1) should do it. And as a bonus, you can remap the same combination to also snap left and right using <^<#<!Left::Send #{Left}
    – Domino
    Feb 18, 2020 at 23:52
5

place yours windows just about like you want --> right click on taskbar --> "show windows stacked" --> profit!

4

As Rain suggested here, PowerResizer works well. Not very customizable - you can't change keyboard shortcuts, but it's at least open source. As JoeB notes, you can press these while dragging a window: W to move up, and Z to move down. A is to move to the left, S to move to the right. Or just drag the window to the edge. Pressing 1,2,3, and 4 while dragging will do a quarter snap to a corner. I'm happy with it, try it out.

2
  • I just tried WindowSpace; if you don't mind paying $25, it's a much better solution. Oct 17, 2014 at 1:09
  • 1
    There's documentation! readme.txt in the program files installation folder. Not to mention it does exactly what I wanted, which was vertical half snap. 1/4 snaps are an extra bonus!
    – scaryman
    Nov 18, 2014 at 16:23
3

If you have an AMD graphics card, you can use "Hydravision."

(1) Open the Catalyst Control Center (2) Under "Desktop and Displays" click "More..." (3) Under "Hydravision" click "HydraGrid" (4) Check "Enable HydraGrid" (5) Click "Edit HydraGrid" and put grid lines where you'd like, e.g. half way up a portrait monitor (6) Apply

Now when you are working with windows, you can right click on the title bar and select "Attach to Grid," then drag it from place to place and it will snap to the grid.

I run 3x1 24" monitors in portrait mode with this setup and it's the quickest way I've found to snap windows to the top and bottom half of each monitor.

1
  • 1
    I made the mistake of installing Catalyst Control Center to try out Hydravision. That program is a hog and I am looking for another solution.
    – dana
    Mar 25, 2013 at 22:33
2

There are lots of options provided by Windows, including STACKING, SIDE BY SIDE, and CASCADING. These are done by right-clicking an empty area on the task-bar (usually at the bottom of the screen) and selecting. Yeah, it's not a keyboard short-cut, but it's fairly close.

Don't trust me, get it straight from the horse's mouth, Microsoft here.

Also the website has a lot of other nice tidbits--many that you know, a few might be new. Hope this helps.

2

Check out AquaSnap. You can mouse drag as expected, use Ctrl+Mouse to resize two tiled windows at the same time, besides a host of other features.

See awesome docking features

You can also use a wide variety of hotkeys. This program overrides a few Windows defaults you are already used to using, besides changing Win+Up and Win+Down for dock to top/bottom.

Hotkey examples

WindowSpace works, but isn't nearly as nice, and can hang up for a while when you hit apply. Comparably, the free/trial version of Aquasnap Pro is a very smooth experience.

2

Use the free PowerToys by Microsoft. It includes a feature called FancyZones which allows you to divide your monitor into custom areas and use Shift-drag to drag windows into those areas.

1
  • 1
    You can actually override the native Window Snap and move around the windows across the zones by using just the keyboard, as explained here Mar 8, 2022 at 1:44
1

There is a third-party-free way to achieve this functionality, but AFAIK:

  • It requires some mouse use
  • It only works for two windows.

The recipe is:

  1. Snap the windows side-by-side the usual way.
  2. Press Win+Down to make one of the windows take a quarter of the screen
  3. Select the other window and press Win+Up to make the other window take the opposite quarter of the screen
  4. Use the mouse to grab the edge of the window and resize it to the edge of the screen, thus maximizing the width of each window without changing their heights.
1
  • Nice tip, but it's a ton of work to get it right each time.
    – 11101101b
    Jul 20, 2018 at 19:26
0

An option that I've found useful is to subdivide your monitors into virtual halfs using DisplayFusion. You set this up by doing the following:

  • Right-click the DisplayFusion icon located on your notification area and go to Monitor Configuration.
  • Select the monitor that you want to configure.
  • Add a vertical split to the monitor. (You could play around with this and split your monitors up even more.)

With this enabled, you should be able to use your Windows + Arrow keys to navigate your window to maximize into that new vertically split area of your monitor. I'm about to run my two 1920x1200 monitors in portrait mode once my 30" comes in and vertically snapping windows will be a necessity.

0

I needed to repeatedly split the two Browser Windows top and bottom in Windows 10 with a multi-monitor setup with a lot of other windows already open. Could do it manually but wanted a better solution.

I found the Chrome Extension "Tab Resize - Split Screen Layouts" extension made this super easy for me.

Just open a new Chrome Window, click the Tab Resize extension icon, pick 2x1 option. Nice and easy now.

1
  • 1
    It looks like the person who asked the question wanted a solution that works for all programs, not just Chrome. Do you have something that does that?
    – Ben N
    Jun 10, 2016 at 0:05
0

If you use a Dell monitor, you can install the Dell Display Manager, which has options to divide the display into a grid.

Then you can drag the window into a cell while holding down the Shift key.

0

Windowpad is super lightweight and deals with this quite nicely.

It's a standalone exe, you run it after booting, then windows key + numpad maximises to the various quarters and halves. Or if you don't have a numpad then capslock + the WASD area.

https://autohotkey.com/board/topic/19990-windowpad-window-moving-tool/

0

This is brand-specific, and means using the mouse instead of the keyboard, but if you use Dell monitors you can use Dell Display Manager (free).

It lets you split up each monitor however you want (2x1, 2x2, 4x2, whatever), then you snap windows into place in any segment. I've been using it for a few years now, and it's really good.

0

Just use AOC Screen+ and your problem is solved. ;)

2
  • 3
    Welcome to Super User. Answers like yours may attract downvotes because of their terseness. I'm not going to vote down but other users may. If you want to improve the answer then edit it and follow this outline. Jan 10, 2021 at 14:57
  • Welcome to Super User! Please read How do I recommend software for some tips as to how you should go about recommending software. You should provide at least a link, some additional information about the software itself, and how it can be used to solve the problem in the question.
    – DavidPostill
    Jan 10, 2021 at 15:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .